我在将文本输入到SVProgressHUD下的UITextField时遇到了麻烦(基本上是带有全屏透明UIWindow的UIView和一些显示文本和自定义绘制进度条的UIView子视图)。
我的问题是UITextField显示闪烁的光标并且键盘显示,但是当我点击一个键时,没有任何内容输入到文本字段中。 我只看到光标的闪烁中断就像正常一样。 有趣的是,后退(删除)键有效(它确实删除了UITextView中的最后一个字母),但没有任何其他键。
我正在使用iOS 6.
任何帮助都将受到高度赞赏。
编辑:
当没有显示SVProgressHUD时,相同的UITextField工作正常。这让我觉得它与第一个响应者有关,但我已经尝试在SVProgressHUD的每个窗口和子视图上调用resignFirstResponder
,但它仍然不起作用。
答案 0 :(得分:35)
我终于找到了问题:
SVProgressHUD在初始化时调用makeKeyAndVisible
,因为它希望接收键盘通知以进行重新定位。我查看了“关键窗口”实际上是什么,并找到了:
...关键窗口响应用户输入......
现在,由于SVProgressHUD的UIWindow是keyWindow,我的另一个窗口(包含UITextField)没有得到用户输入。
我终于在AppDelegate的窗口上调用makeKeyWindow
,一切正常。
我希望这有助于任何有类似问题的人。
答案 1 :(得分:4)
在显示resignFirstResponder()
之前,请先致电SVProgressHUD
以关闭键盘。
答案 2 :(得分:2)
你实施了这个方法....
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
...过滤掉任何不需要的字符?如果是这样,也许它对过滤有点过分了?
答案 3 :(得分:0)
对我而言,这是有效的。
我在textfield委托方法中进行了更改,然后才有效。
if ([textField isEqual:selectBankName])
{
return No;
}
else if ([textField isEqual:enterAmountTextfield])
{
return YES;
}
return NO;
}
确保textfield userInteraction为Enabled.And
最后请检查您的文本域委托方法。