【问题标题】:How do I stop the keyboard from blocking an external notification's close buttons on iOS?如何阻止键盘在 iOS 上阻止外部通知的关闭按钮?
【发布时间】:2011-08-08 09:22:43
【问题描述】:

我有一个 UIAlertView,里面有一个文本字段。此视图正常工作;它出现在屏幕的上半部分,因此当键盘出现时,按钮和文本条目仍然可见且可点击。

但是,如果在文本字段是第一响应者并且键盘启动时来自另一个应用程序的本地或远程通知进入,它会隐藏我的警报并将新警报放在键盘后面。如果警报超过一行,则无法单击其按钮并且用户无法关闭它。它不会通过任何正常机制关闭我的警报视图——alertView:clickedButtonAtIndex:alertView:cancel: 都不会被我的委托调用——而是使用某种未知机制暂时隐藏它。

当通知隐藏我的警报视图时,我能否收到通知,以便我可以关闭键盘并让用户处理通知?是否有任何其他事件可以让我抓住这个案例?

【问题讨论】:

    标签: iphone ios user-interface uialertview


    【解决方案1】:

    注册应用程序的UIApplicationWillResignActiveNotification;当你得到那个时,关闭你的警报视图。来自文档:

    一个活跃的应用程序可以说是有焦点的。它在启动后获得焦点,在弹出覆盖窗口时或在设备锁定时失去焦点,在设备解锁时获得焦点。

    警报视图(例如由其他应用的通知呈现的视图)是覆盖窗口。注意该通知,关闭警报以免键盘妨碍您,并准备好在您的应用收到UIApplicationDidBecomeActiveNotification 时重新显示警报。

    【讨论】:

      【解决方案2】:

      我希望这会有所帮助...

      - (void)willPresentAlertView:(UIAlertView *)alertView {
         if (newAlertViewWhichBlocks.tag == alertView.tag) {
          [yourTextField resignFirstResponder];
         }
      }
      

      记得设置警报视图的委托。

      【讨论】:

      • 我无法控制通知 UIAlertView - 它没有我可以设置的委托,我的理解是它甚至不会在我的内存空间中运行。
      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2018-04-09
      • 2021-03-28
      • 2018-11-10
      • 1970-01-01
      • 2010-10-05
      • 2014-05-06
      相关资源
      最近更新 更多