iOS 8键盘扩展检测第一响应者更改

时间:2015-04-09 02:05:36

标签: ios cocoa-touch

我正在为iOS编写键盘扩展程序(因此会覆盖UIInputViewController),并且我试图弄清楚如何检测第一个响应者何时更改。这甚至可能吗?

我的动机是,当用户选择不同的文本输入字段时(键盘处于活动状态时),键盘的样式可能需要更改以适应该输入的属性。当UI上显示多个文本字段并且用户首先选择一个(导致键盘初始化)然后用户选择具有不同属性的另一个(键盘不知道它)时,就会发生这种情况。

我已经查看了UIInputViewController及其实施的代表公开的方法,但我看到的任何内容都不符合要求。我发现的最近的事情是selectionDidChange上的UITextInputDelegate

2 个答案:

答案 0 :(得分:1)

我发现获取此信息的最佳方式是覆盖UITextInputDelegate textDidChange方法(UIInputViewController实现UITextInputDelegate)。事实证明,只要用户切换输入文本字段(第一响应者),或者文本由于某种原因而发生更改时,就会调用textDidChange(幸运的是,当您的键盘启动了更改时)。

答案 1 :(得分:0)

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField

那应该告诉你它什么时候成为第一个响应者。要牢记几件事情;

*仅当UITextFied成为firstResponder时才会调用此方法。如果某个其他对象决定,则不会被调用。它可能会调用以下方法。

-(BOOL)becomeFirstResponder

*您的班级必须符合UITextFieldDelegate,并且您的所有UITextField必须将其代表设置为self。没有它,他们就不会在你的班级上调用shouldBeginEditing。