10

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

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

我正在使用 iOS 6。

任何帮助将不胜感激。

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

4

4 回答 4

35

我终于找到了问题: SVProgressHUDmakeKeyAndVisible在初始化时调用,因为它想接收重新定位的键盘通知。我查了一下“关键窗口”实际上是什么,发现:

...按键窗口响应用户输入...

现在,由于 SVProgressHUD 的 UIWindow 是 keyWindow,我的另一个包含 UITextField 的窗口没有得到用户输入。

我终于调用makeKeyWindow了 AppDelegate 的窗口,一切正常。

我希望这可以帮助任何有类似问题的人。

于 2012-09-29T18:53:08.370 回答
4

在显示之前调用resignFirstResponder()以关闭键盘SVProgressHUD

于 2012-10-30T22:05:47.017 回答
3

你实现了这个方法吗......

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

...过滤掉任何不需要的字符?如果是这样,也许它对过滤有点过分热心?

于 2012-09-29T15:46:22.687 回答
0

对我来说,这是可行的。

我对我的文本字段委托方法进行了更改,然后它起作用了。

if ([textField isEqual:selectBankName])
{
   return No;
}
else if ([textField isEqual:enterAmountTextfield])
{
    return YES;
}

return NO;
}
  1. 为文本字段设置委托
  2. 确保文本字段 userInteraction 已启用。并且

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

于 2015-08-13T05:39:30.270 回答