美文网首页
iOS 使用输入框的inputAccessoryView属性实现

iOS 使用输入框的inputAccessoryView属性实现

作者: MNode | 来源:发表于2017-03-19 09:04 被阅读562次
    在开发应用程序时会经常用到输入消息并发送消息的功能,比如今日头条或者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会有惊喜的哦!

    源码-->github

    相关文章

      网友评论

          本文标题:iOS 使用输入框的inputAccessoryView属性实现

          本文链接:https://www.haomeiwen.com/subject/bekmnttx.html