【问题标题】:UITextField not getting keyboard inputUITextField 没有得到键盘输入
【发布时间】:2012-09-21 04:04:01
【问题描述】:

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

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

我使用的是 iOS 6。

任何帮助将不胜感激。

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

【问题讨论】:

    标签: ios keyboard uitextfield ios6


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      对我来说这是可行的。

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

      if ([textField isEqual:selectBankName])
      {
         return No;
      }
      else if ([textField isEqual:enterAmountTextfield])
      {
          return YES;
      }
      
      return NO;
      }
      
      1. 为文本字段设置委托
      2. 确保文本字段 userInteraction 已启用。并且

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        我希望这对遇到类似问题的人有所帮助。

        【讨论】:

        • 我们可以同时使用 makeKeyWindow 和 makeKeyAndVisible 吗?有什么意义或用途
        • 我不知道为什么这个答案现在还没有几百个赞。非常感谢!
        • 当 StackOverflow 总是出现时,我不知道为什么我还要麻烦调试这样的问题。谢谢!
        • 在我的情况下,情况正好相反。我的 UITextField 与 AppDelegate 位于不同的窗口中,但警报将焦点带回 AppDelegate。在正确的 UIWindow 对象上执行makeKeyWindow 为我修复了它。感谢您为我指明正确的方向。
        • 在我的例子中,我抓住了自定义弹出窗口和进度信息的关键窗口。在 iOS 6 中,我必须显式重置 makeKeyWindow 以获取键盘输入。 ICK。
        【解决方案4】:

        你实现方法了吗……

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

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

        【讨论】:

        • 我不使用 shouldChangeCharactersInRange (它实际上是一个 UITextField。抱歉,我现在已经更新了我的问题)作为文本字段。此外,当上面没有显示 SVProgressHUD 时,相同的 UITextField 可以正常工作。不过,感谢您的回答!
        猜你喜欢
        • 1970-01-01
        • 2015-10-06
        • 2011-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        • 2012-02-05
        相关资源
        最近更新 更多