在子视图(UITextView)

时间:2017-01-12 02:09:27

标签: ios uiview custom-keyboard uiresponder uiinputviewcontroller

我已添加UIView Subclass UITextField。我已将此视图设置为Viewcontroller的顶视图。 在UIViewSubclass中,我重写了inputViewController getter以提供自定义键盘。

当我选择UITextField时,我会假设becomeFirstResponder的{​​{1}}被调用,我会看到与之关联的键盘。 但是,除此之外,我的UITextField上的inputViewController方法也会被调用,导致文本字段和UIView的输入视图逐个显示在另一个上面。我也没有在UIView Subclass上看到canBecomeFirstResponderbecomeFirstResponder被调用。仅调用UIView's subclass方法并显示自定义键盘。

任何人都可以帮助我理解为什么inputViewController会在inputViewController被调用,即使它没有成为第一响应者。

更新 来自苹果文档 - &#34;输入视图可替代分配给文本视图或自定义视图的inputView属性的系统键盘。当有输入视图时,即使文本对象是第一响应者,UIKit也可能更换键盘,并且可能代表非开发人员对象显示类似键盘的输入视图。&#34; < / p>

因此,如果我理解正确,UIResponder在我的UIView子类上调用inputViewController确实有意义,但理想情况下它应该用inputViewController换出textfields键盘?显然,这不会发生。

1 个答案:

答案 0 :(得分:0)

您是否专门使用UIView子类来覆盖inputViewController?您可以尝试不这样做,而是继承UITextField,然后在UITextField子类中覆盖inputViewController。