UITextView似乎没有实现reloadInputViews

SG1*_*SG1 3 iphone uitextview

将自定义输入视图加载到UITextField中,我可以在UIKeyboardTypeAlphabet和UIKeyboardTypeNumberPad之间任意更改标准键盘的键盘类型.只需打电话:

[editingField setKeyboardType:UIKeyboardTypeNumberPad];
[editingField reloadInputViews];
Run Code Online (Sandbox Code Playgroud)

而且中提琴!有你的号码垫.

在不更改此代码块的情况下,只是使editField成为UITextView而不是UITextField,它不再有效.根据文档,这些都符合UITextInput和UITextInputTraits协议.

值得一提的是,上面的代码实际上确实有效,但只有在用户离开有问题的textView并稍后重新选择之后.它几乎就像reloadInputViews什么都不做,然后textView在它变成FirstFirstResponder时加载它的输入视图.

我已经尝试了各种performSelector:等,并且无法强制解决问题.有任何想法吗?如何使UITextView服从reloadInputViews并动态更改其inputView?

Den*_*cik 5

在调用之前,您是否将UITextView的inputView设置为nil?

[editingField setKeyboardType:UIKeyboardTypeNumberPad];
[editingField reloadInputViews];
Run Code Online (Sandbox Code Playgroud)

  • tf.inputView = nil; [tf resignFirstResponder]; [tf setKeyboardType:UIKeyboardTypeEmailAddress]; [tf becomeFirstResponder]; [tf reloadInputViews]; 序列工作.但我会在空闲时间检查这种奇怪的行为,如果发现任何问题,请告知您. (2认同)