iOS 使用输入框的inputAccessoryView属性实现键盘上添加视图

在开发应用程序时会经常用到输入消息并发送消息的功能,比如今日头条或者UC头条这些软件底部都会有,如何想向这些应用一样点击UITextField或者UITextView就可以弹出键盘并在键盘上也能加上同意的输入和发送功能?
不少iOS同仁是通过监听触发键盘弹起和收起后的高度在相关位置添加输入消息和发送消息的视图或者改变视图的高度来实现的,这样比较麻烦,如何在不需监听键盘弹起和收起的情况下实现这样的功能?通过苹果自带的UITextField和UITextView的属性就可以实现如下图所示功能:
iOS 使用输入框的inputAccessoryView属性实现键盘上添加视图_第1张图片
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会有惊喜的哦!

源码-->github

你可能感兴趣的:(iOS 使用输入框的inputAccessoryView属性实现键盘上添加视图)