close
当前位置: 物联网在线 > 技术文库 > ios >

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

在开发应用程序时会经常用到输入消息并发送消息的功能,比如今日头条或者UC头条这些软件底部都会有,如何想向这些应用一样点击UITextField或者UITextView就可以弹出键盘并在键盘上也能加上同意的输入和发送功能?

不少iOS同仁是通过监听触发键盘弹起和收起后的高度在相关位置添加输入消息和发送消息的视图或者改变视图的高度来实现的,这样比较麻烦,如何在不需监听键盘弹起和收起的情况下实现这样的功能?通过苹果自带的UITextField和UITextView的属性就可以实现如下图所示功能:

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

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 会有惊喜的哦!


(责任编辑:ioter)

用户喜欢...

在 Airbnb 使用机器学习预测房源的价格

作者:Robert Chang 位于希腊爱琴海伊莫洛维里的一个 Airbnb 民宿的美好风景 简介 数据产品一直是 Airbnb 服务的重要组成...


如何使用可编程逻辑为按钮输入消抖

可编程逻辑具有传统分立 IC 无法提供的灵活性。 借助现成的开发工具,可轻松使用现场可编程门阵列和复杂可编程逻辑器件创建应用特定型功能。 按钮开关输入消抖便是此类功能的一个例子...


使用 LoRa 进行低速率、长距离物联网应用开发

设计人员可以使用各种各样的无线技术将产品连接到物联网 (IoT)。每种技术适用于不同的应用,需要设计人员仔细考虑作用距离和数据速率、成本、功耗、体积和外形等因素。 本文将介绍 LoR...


Allegro MicroSystems,LLC发布宽输入电压、无电感 升-降压稳压器

Allegro MicroSystems,LLC宣布推出一款全新的宽输入5V输出稳压器,可用于为汽车传感器和低功率微控制器(uController)供...


这款智能手表心率检测超强 可当做心电图机使用

Cronovo智能手表特别强调心率追踪功能,它安装了Android系统,可以成为个人健身教练,拥有先进的感知追踪系统。Cr...


Quora是如何使用机器学习的?

作者:Nikhil Dandekar 2015年,公司的工程副总裁Xavier Amatriain,关于如何在Quora上使用机器学习给了一个很好的答案。从那...


机器学习算法的基本知识(使用Python和R代码)

本篇文章是原文的译文,然后自己对其中做了一些修改和添加内容(随机森林和降维算法)。文章简洁地介绍了机器学习的主要算法和一些伪代码,对于初学者有很大帮助,是一篇不错的总结...


ROHM开发出2MHz工作、业界最高降压比、60V输入2.5V输出的电源IC“BD9V100MUF-C”

全球知名半导体制造商ROHM面向轻度混合动力汽车等48V电源驱动的车载系统,开发出汽车要求的2MHz工作(开关)条件下...


如何使用TensorFlow构建、训练和改进循环神经网络

作者:机器之心编译 来自 Silicon Valley Data Science 公司的研究人员为我们展示了循环神经网络(RNN)探索时间序列和开发语...


使用TENSORFLOW训练循环神经网络语言模型

读了将近一个下午的TensorFlow Recurrent Neural Network教程,翻看其在PTB上的实现,感觉晦涩难懂,因此参考了部分代码,自...