我在一个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;
}
  1. 为textfield设置委托
  2. 确保textfield userInteraction已启用。和

  3. 最后请检查您的textfield委托方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top