我正在为iOS编写键盘扩展程序(因此会覆盖UIInputViewController
),并且我试图弄清楚如何检测第一个响应者何时更改。这甚至可能吗?
我的动机是,当用户选择不同的文本输入字段时(键盘处于活动状态时),键盘的样式可能需要更改以适应该输入的属性。当UI上显示多个文本字段并且用户首先选择一个(导致键盘初始化)然后用户选择具有不同属性的另一个(键盘不知道它)时,就会发生这种情况。
我已经查看了UIInputViewController
及其实施的代表公开的方法,但我看到的任何内容都不符合要求。我发现的最近的事情是selectionDidChange
上的UITextInputDelegate
。
答案 0 :(得分:1)
我发现获取此信息的最佳方式是覆盖UITextInputDelegate
textDidChange
方法(UIInputViewController
实现UITextInputDelegate
)。事实证明,只要用户切换输入文本字段(第一响应者),或者文本由于某种原因而发生更改时,就会调用textDidChange
(幸运的是,当您的键盘启动了更改时)。
答案 1 :(得分:0)
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
那应该告诉你它什么时候成为第一个响应者。要牢记几件事情;
*仅当UITextFied成为firstResponder时才会调用此方法。如果某个其他对象决定,则不会被调用。它可能会调用以下方法。
-(BOOL)becomeFirstResponder
*您的班级必须符合UITextFieldDelegate,并且您的所有UITextField必须将其代表设置为self。没有它,他们就不会在你的班级上调用shouldBeginEditing。