iOS 使用輸入框的inputAccessoryView屬性實現鍵盤上添加視圖

ShaylaWethe 7年前發布 | 16K 次閱讀 iOS開發 移動開發

在開發應用程序時會經常用到輸入消息并發送消息的功能,比如今日頭條或者UC頭條這些軟件底部都會有,如何想向這些應用一樣點擊UITextField或者UITextView就可以彈出鍵盤并在鍵盤上也能加上同意的輸入和發送功能?

不少iOS同仁是通過監聽觸發鍵盤彈起和收起后的高度在相關位置添加輸入消息和發送消息的視圖或者改變視圖的高度來實現的,這樣比較麻煩,如何在不需監聽鍵盤彈起和收起的情況下實現這樣的功能?通過蘋果自帶的UITextField和UITextView的屬性就可以實現如下圖所示功能:

17.gif

UITextField和UITextView都有個輔助屬性 inputAccessoryView ,通過它可以在鍵盤上添加視圖,并實現先關功能,方法很簡單,如下代碼所示:

import UIKit

class ViewController: UIViewController {
    let kScreenWidth = UIScreen.main.bounds.size.width
    let toolBar: UIToolbar = {
        //創建ToolBar
        let tmpToolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 70))
        tmpToolBar.backgroundColor = UIColor.gray
        return tmpToolBar
    }()
    var textView: UITextView!

    @IBOutlet weak var inputTextField: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        //創建UITextView
        textView = UITextView(frame: CGRect(x: 0, y: 5, width: kScreenWidth/4*3, height: 60))
        textView.backgroundColor = UIColor.lightGray
        let inputItem = UIBarButtonItem(customView: textView)
        //創建發送按鈕
        let sendBtn = UIButton(frame: CGRect(x: 0, y: 5, width: kScreenWidth/4-40, height: 50))
        sendBtn.contentMode = .center
        sendBtn.setTitle("發送", for: .normal)
        sendBtn.setTitleColor(UIColor.blue, for: .normal)
        sendBtn.addTarget(self, action: #selector(handleSend(event:)), for: .touchUpInside)
        let sendItem = UIBarButtonItem(customView: sendBtn)
        //ToolBar添加textView和發送按鈕
        toolBar.items = [inputItem,sendItem]
        //賦值給UITextField的inputAccessoryView
        inputTextField.inputAccessoryView = toolBar
    }
    func handleSend(event: UIButton) -> () {
        print(textView.text)
        view.endEditing(true)
    }
}

是不是很簡單。 open var inputAccessoryView: UIView? 可以看出,由于是繼承UIView,所以可以放你想放的所以View和設置想設置的高度。

對 inputAccessoryView 感興趣的同學,可以試下 inputView 會有驚喜的哦!

 

 

來自:http://www.jianshu.com/p/374cc6f94662

 

 本文由用戶 ShaylaWethe 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!