ios8 – 在reloadInputViews调用后,UITextField不再重新加载keyboardType

前端之家收集整理的这篇文章主要介绍了ios8 – 在reloadInputViews调用后,UITextField不再重新加载keyboardType前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在iOS 7中,我可以改变键盘类型,而它是第一个响应器(即时):
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会影响运行时的行为.

在我的情况下,它是一个UITextField,我试图转换到UITextView以防万一.不去

再次提到它在iOS7 / Xcode5下运行良好.

我不知道这是Xcode 6的“beta”问题,还是iOS 8的设计变更.

解决方法

我发现同样的问题.最好检查textField是否已经是firstResponder.
[textField reloadInputViews]; // does not work on iOS8 !

if ([textField isFirstResponder]) {
    [textField resignFirstResponder];
    [textField becomeFirstResponder];
}

不是一个干净的方式,但它的作品.

原文链接:https://www.f2er.com/iOS/330652.html

猜你在找的iOS相关文章