【问题标题】:How to suppress virtual Keyboard slide-in animation?如何抑制虚拟键盘滑入动画?
【发布时间】:2012-02-16 12:32:20
【问题描述】:

我在创建模拟天气应用程序行为的模式搜索视图时遇到了问题。具体来说,有两个动画让我感到困扰并引入了不必要的 0.2 秒延迟:

  • 当模态视图变得可见时,我通过在 viewDidAppear 中调用 becomeFirstResponder 将焦点放在 UISearchDisplayController.searchBar 上。但是,当模态视图滑入时,键盘是不可见的,但在模态视图过渡动画完成后还需要0.2s才能滑入。将呼叫转移到另一个回调,如 viewWillAppearviewDidLoad 没有好处,键盘一开始就不会出现。

  • 当用户触摸取消时,会在调用代理的searchDisplayControllerDidEndSearch 方法之前发生另一个动画,扩展搜索文本字段并“融化”按钮。同样,这个动画是非内联的,因为模态视图应该在按钮被触摸时转出。

  • 此外,当我关闭并重新呈现相同的视图时,不仅键盘会在转换后滑入,而且取消按钮也会这样做(幸运的是同时)。

我知道这里描述的类似问题:Keyboard Animation Issues When Calling becomeFirstResponder within a Modal View Controller。 但是,搜索栏的行为似乎与文本字段的行为略有不同。我无法重现该作者描述的通过在viewDidLoad 中调用becomeFirstResponder 使键盘可见的步骤。

问候, 克里斯

【问题讨论】:

    标签: objective-c ios uisearchbar uisearchdisplaycontroller becomefirstresponder


    【解决方案1】:

    我想我找到了你的答案。当您使用界面生成器添加搜索栏时,您可以通过两种方式进行:“搜索栏”和“搜索栏和搜索显示控制器”。

    我使用的是第二个,并且遇到了与您描述的完全相同的问题。我只能在“viewDidAppear”上调用键盘(使用 becomeFirstResponder)。但是,如果您这样做,只添加搜索栏就可以了。现在我可以在“viewDidLoad”上调用 becomeFirstResponder,键盘与视图本身一起出现。

    我的意思是多做一些工作,但实际上并不多。您必须将控制器设置为搜索栏的代表。我为结果添加了一个列表视图,并使我的控​​制器成为它的委托和数据源。

    【讨论】:

    • 感谢您花时间创建帐户告诉我:-)。自 2 月以来,我已经对应用程序进行了改造,所以这对我来说不再是问题。我希望这可以帮助很多想要模拟原生 iOS 应用程序用户体验的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多