iOS使自定义键盘为UITextField生成标准键描边

Pet*_*r M 7 keyboard uitextfield ios

好的我看了看,我想我错过了一些关于自定义键盘和插入文本的东西UITextField.像许多人一样,我正在UIView使用我自己的自定义键帽创建自定义键盘UIButtons.然后我将此视图分配给UITextField inputView,然后当该文本字段成为第一个响应者时,我的键盘会弹出.在键盘内部我捕获按钮动作并将它们转换为按键操作.

但是从这里开始,我很困惑如何最好地将我的击键发送到文本字段.我见过很多例子,如iOS自定义键盘更新父视图中的文本字段返回输入到UITextfield自定义输入视图以及如何将键值从自定义键盘推入UITextView在iOS中,解决方案似乎是嵌入指向目标的指针UITextField在自定义视图中.

这对我来说似乎不对,对于多个UITextFields我必须在新文本字段成为第一个响应者时手动更改单个自定义键盘上的引用,或者我必须为每个文本字段携带匹配的自定义键盘我想要支持.

在我看来,键盘应该只是将触摸转换为标记并将这些标记发送到线上,以便由接收它们的人解释(第一响应者?). iPad For iPhone开发人员101自定义输入视图教程似乎这样做,但创建了一个自定义协议来执行此操作.我想(实际上是一个SWAG - Scientific Wild Arsed Guess)标准的iOS键盘就是这样运行的,但是使用特定的协议来传递击键.所以我想要做的是手动生成标准键盘所做的相同事件/消息链.

那我该怎么做呢?或者我甚至可以使用公共API执行此操作?或者标准键盘的操作是否与UITextField绑定得太紧了?

pe8*_*ter 1

这是一个非常开放式的问题。其实,你可以选择自己想要的。苹果的文档是这样描述的:

输入视图和输入附件视图的子视图可以是您想要的任何内容。如果它们是按钮或其他控件,则需要为每个控件指定目标和操作,并实现关联的操作方法以执行数据输入或操作。

您还可以创建一个 UITextField 子类并显式实现 getter 以inputView返回指向自定义键盘视图类的指针。在此 getter 中,您可以按照您之前的建议设置类似 UIControl 的目标/操作系统。这样做就不需要从外部设置自定义键盘——这一切都在内部处理。它还将该代码仅放入一个位置。

一旦自定义文本字段放弃第一响应者,您就可以将文本字段的指针从键盘中删除。