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)

用户喜欢...

突破PLCDCS多通道模拟输入通道间隔离、高密度和EMI高辐射的设计障碍

在高端工厂自动化应用中(如油气厂和电厂),常会要求多路采 集通道与通道之间进行隔离,其中高耐压、小尺寸、低EMI、高可 靠性和低成本等要求在通道间隔离设计中别具挑战性。通常目前...


使用光学传感器解决传感挑战

能够适应不断变化的应用要求的测量系统是首选,因为不断增长的成本压力需要较长的系统寿命和功能灵活性。开发此类系统的最有效方法是使用像PXI这样的软件定义的模块化架构。可以混合和...


自主汽车传感器:处理器算法如何获得输入

尽管鉴于最近特斯拉级别S的死亡,有关自主汽车消亡的非技术性媒体报道,我想在本文中介绍传感器电子设备,结合更好和更精细的软件算法,最终将实现在未来十年内,一辆安全,完全自主...


使用DLP技术创建高分辨率自适应大灯

传统上,典型的汽车前照灯光束仅照亮车辆前方的物体,以提高驾驶员在低光照和恶劣天气条件下的可视性。低光束在车辆前方短距离照亮道路,而远光灯具有更长的范围和更宽的角度。这种...


使用原型套件简化能量收集设计

在使用设计之前,根据其环境条件,能量收集电路能够提供多少功率可能并不明显。 这会影响能量收集源和能量存储所需的尺寸和质量。 为了使设计进一步复杂化,诸如能量存储泄漏,稳压器...


使用Xilinx系统生成器实现简单的DDS

在本文中,我们将讨论使用Xilinx System Generator实现简单的直接数字频率合成器(DDS)。 System Generator是一个功能强大的工具,它将Xilinx FPGA设计过程与MATLAB的Simulink集成,后者使用高级描述轻松实...


如何为RF应用选择,使用和维护同轴连接器

无线电频率(RF)电路在有线和无线通信中正在激增,包括用于物联网(IoT)的Wi-Fi和各种无线技术。这些高频信号需要在系统,电路组件和子组件之间进行分配,而损耗或寄生辐射损耗最小。...


为物联网程序存储器应用选择和使用正确的闪存技术

随着IoT节点变得越来越强大,处理需求可能会增加到需要完整的嵌入式操作系统(OS)(如Linux)才能正确管理所有运行任务的复杂性的水平。尽管将此代码存储在闪存microSDHC卡上很方便,但大...


使用RS-485和电流回路接口实现可靠的工业连接

尽管蓝牙,以太网和其他连接选项广泛普及并支持高数据速率,但工业应用设计人员仍然需要确保以最低的成本获得最可靠的连接。他们还必须在安装的连接选项基础范围内工作。 由于这些原...


使用Zigbee和线程快速构建网状连接的照明应用

对于家庭,建筑和工业自动化应用,连接的照明系统非常方便,可以帮助节省能源。基于802.15.4的网状网络提供低功耗操作,扩展范围和可用性的有效组合,但实施起来却很复杂。 为了减少这种...