UITextField没有得到键盘输入
-
11-12-2019 - |
题
我在一个UITextField下输入文本时遇到了麻烦。 SVProgressHUD (基本上是一个具有全屏透明UIWindow的UIView和一些显示文本和自定义绘制进度条的UIView子视图)。
我的问题是UITextField显示闪烁的光标和键盘显示,但是当我点击一个键时,没有任何内容输入到文本字段中。我只看到光标的闪烁中断就像正常一样。有趣的是,back(delete)键起作用(它确实删除了UITextView中的最后一个字母),但没有任何其他键。
我正在使用iOS6。
任何帮助将不胜感激。
编辑:当没有显示SVProgressHUD时,相同的UITextField工作正常。这让我觉得它与第一响应者有关,但我已经尝试过打电话 resignFirstResponder
在SVProgressHUD的每个窗口和子视图上,它仍然不起作用。
解决方案
我终于找到问题了:SVProgressHUD调用 makeKeyAndVisible
当它初始化时,因为它希望接收键盘通知以进行重新定位。我查了一下"关键窗口"实际上是什么,发现了:
...键窗口响应用户输入。..
现在,由于SVProgressHUD的UIWindow是keyWindow,我的另一个包含UITextField的窗口没有获得用户输入。
我终于打电话 makeKeyWindow
在AppDelegate的窗口,一切工作正常。
我希望这有助于任何有类似问题的人。
其他提示
打电话 resignFirstResponder()
在显示之前关闭键盘 SVProgressHUD
.
你有没有实现的方法。...
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
..。要过滤掉任何不需要的字符?如果是这样,也许是有点过分热心的过滤?
对我来说,这是工作。
我在我的textfield委托方法中做了更改,然后它工作了。
if ([textField isEqual:selectBankName])
{
return No;
}
else if ([textField isEqual:enterAmountTextfield])
{
return YES;
}
return NO;
}
- 为textfield设置委托
确保textfield userInteraction已启用。和
最后请检查您的textfield委托方法。