UITextField没有得到键盘输入

时间:2012-09-29 15:39:55

标签: ios keyboard uitextfield ios6

我在将文本输入到SVProgressHUD下的UITextField时遇到了麻烦(基本上是带有全屏透明UIWindow的UIView和一些显示文本和自定义绘制进度条的UIView子视图)。

我的问题是UITextField显示闪烁的光标并且键盘显示,但是当我点击一个键时,没有任何内容输入到文本字段中。 我只看到光标的闪烁中断就像正常一样。 有趣的是,后退(删除)键有效(它确实删除了UITextView中的最后一个字母),但没有任何其他键。

我正在使用iOS 6.

任何帮助都将受到高度赞赏。

编辑: 当没有显示SVProgressHUD时,相同的UITextField工作正常。这让我觉得它与第一个响应者有关,但我已经尝试在SVProgressHUD的每个窗口和子视图上调用resignFirstResponder,但它仍然不起作用。

4 个答案:

答案 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;
}
  1. 为textfield设置委托
  2. 确保textfield userInteraction为Enabled.And

  3. 最后请检查您的文本域委托方法。