【问题标题】:Is there a way to know that iOS keyboard is really hidden (dismissed by user)?有没有办法知道 iOS 键盘真的被隐藏了(被用户解雇了)?
【发布时间】:2013-07-22 13:39:19
【问题描述】:

我需要一种方法来检测用户手动关闭 iOS 键盘的情况,使用键盘上的“键盘”按钮。我尝试使用UIKeyboardDidHideNotification,但很快发现当用户拆分键盘并将其留在屏幕上时也会触发此事件。
有没有办法确定键盘真的被隐藏了?

【问题讨论】:

    标签: ios ipad uikeyboard


    【解决方案1】:

    为了获得解决方案,我不得不稍微修改我的原始实现:我已经将 nil 分配给我的主视图的 inputView 成员替换为创建和销毁自定义不可见 UIView<UIKeyInput> 视图以相应地显示和隐藏键盘。这使我可以覆盖此视图的 resignFirstResponder 方法,该方法总是在键盘辞职时调用 - 无论是在正常状态还是在拆分状态下,当用户使用特殊按钮关闭键盘或我以编程方式将其删除时。 p>

    【讨论】:

      【解决方案2】:

      我相信UIKeyboardDidHideNotification 只有在键盘真正消失时才会发送。来自Apple docs

      关闭键盘后立即发布。

      但是,您也可以查看当前是否有任何输入是第一响应者:

      BOOL keyboardUp = NO;
      
      for (UIView *view in self.textInputs)
      {
        if (view.isFirstResponder)
        {
          keyboardUp = YES;
          break;
        }
      }  
      

      【讨论】:

      • UIKeyboardDidHideNotification 在 iPad 上拆分键盘时也会触发,尽管文档没有提及这一点。
      • 如果键盘已经拆分,UIKeyboardDidHideNotification 在键盘关闭时永远不会被触发。
      • 对于键盘交互,我使用自定义 UIView 实现 UIKeyInput 协议,该协议始终是第一响应者。为了显示和隐藏键盘,我用nil 修改inputView 成员或相应地自定义不可见视图。
      猜你喜欢
      • 1970-01-01
      • 2011-12-16
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多