【发布时间】:2014-07-03 06:23:33
【问题描述】:
在 iOS 7 中,我可以更改键盘类型,而它是 firstResponder(即时):
if (textField.text.length > 2) {
textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
}
else
{
textField.keyboardType = UIKeyboardTypeDefault;
}
[textField reloadInputViews];
// (Omitting some efficiency stuff to keep example to bare bones)
这在 Xcode 6/iOS 8 下不再适用。文档主要反映了关于自定义键盘的更改。
使用辞职/成为第一响应者(仍在)工作:
[textField resignFirstResponder];
// Make keyboard change
[textField becomeFirstResponder];
但这只是感觉有点矫枉过正。拆墙重建,只为换一张图。
这里有一个相关的帖子: UITextView does not seem to implement reloadInputViews
但似乎解决方案(在评论中)是“显然将其声明为 UITextView 而不是 UIResponder 会影响它在运行时的行为......现在它可以工作了” p>
在我的情况下,它 是 UITextField,我尝试转换为 UITextView 以防万一。不行。
我会再次提到它在 iOS7 / Xcode5 下运行良好。
我真的不知道这是 Xcode 6 的“测试版”问题,还是 iOS 8 的设计更改。
【问题讨论】:
-
我在 Xcode 6 beta 7 的 iOS8 中看到了同样的问题。
-
reloadInputViews 在运行在 XCode 5.1.1 中创建的应用程序的 iOS8(在设备上)下无法执行任何操作。在 iOS7 中运行良好。
-
直到 iOS 8.1 才解决问题