iOS 8 键盘扩展检测第一响应者变化
iOS 8 Keyboard Extension Detecting first responder change
我正在为 iOS 编写键盘扩展(因此覆盖 UIInputViewController
)并且我正在尝试弄清楚如何检测第一响应者何时发生变化。这可能吗?
我的动机是,当用户选择不同的文本输入字段(键盘处于活动状态时)时,键盘的样式可能需要更改以适应该输入的属性。当 UI 上显示多个文本字段并且用户首先选择一个(导致键盘被初始化)然后用户选择另一个具有不同属性(键盘不知道)时,可能会发生这种情况。
我查看了 UIInputViewController
公开的方法及其实现的委托,但我没有看到真正符合要求的方法。我发现的最接近的是 selectionDidChange
on UITextInputDelegate
.
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
这应该会告诉您它预计何时成为 firstResponder。有几件事要记住;
*这只会在 UITextFied 成为 firstResponder 时调用。如果其他某个对象决定这样做,则不会调用它。它可能会调用下面的方法。
-(BOOL)becomeFirstResponder
*您的 class 必须符合 UITextFieldDelegate 并且您的所有 UITextField 必须将其委托设置为自我。否则他们不会在您的 class.
上调用 shouldBeginEditing
我发现获取此信息的最佳方法是覆盖 UITextInputDelegate
textDidChange
方法(UIInputViewController
实现 UITextInputDelegate
)。事实证明,每当用户切换输入文本字段(第一响应者)或文本因某种原因更改时(幸运的是,不是您的键盘发起更改时),都会调用 textDidChange
。
我正在为 iOS 编写键盘扩展(因此覆盖 UIInputViewController
)并且我正在尝试弄清楚如何检测第一响应者何时发生变化。这可能吗?
我的动机是,当用户选择不同的文本输入字段(键盘处于活动状态时)时,键盘的样式可能需要更改以适应该输入的属性。当 UI 上显示多个文本字段并且用户首先选择一个(导致键盘被初始化)然后用户选择另一个具有不同属性(键盘不知道)时,可能会发生这种情况。
我查看了 UIInputViewController
公开的方法及其实现的委托,但我没有看到真正符合要求的方法。我发现的最接近的是 selectionDidChange
on UITextInputDelegate
.
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
这应该会告诉您它预计何时成为 firstResponder。有几件事要记住;
*这只会在 UITextFied 成为 firstResponder 时调用。如果其他某个对象决定这样做,则不会调用它。它可能会调用下面的方法。
-(BOOL)becomeFirstResponder
*您的 class 必须符合 UITextFieldDelegate 并且您的所有 UITextField 必须将其委托设置为自我。否则他们不会在您的 class.
上调用 shouldBeginEditing我发现获取此信息的最佳方法是覆盖 UITextInputDelegate
textDidChange
方法(UIInputViewController
实现 UITextInputDelegate
)。事实证明,每当用户切换输入文本字段(第一响应者)或文本因某种原因更改时(幸运的是,不是您的键盘发起更改时),都会调用 textDidChange
。