如何抑制虚拟键盘滑入式动画?

时间:2012-02-16 12:32:20

标签: objective-c ios uisearchbar uisearchdisplaycontroller becomefirstresponder

我遇到了创建模态搜索视图的问题,该视图模拟了Weather应用程序的行为。具体来说,有两个动画,困扰我并引入不需要的0.2秒延迟:

  • 当模态视图变得可见时,我通过在UISearchDisplayController.searchBar中调用becomeFirstResponder来关注viewDidAppear。但是,当模态视图滑入时键盘不可见,但在完成模态视图转换的动画后需要另外0.2秒才能滑入。将呼叫转移到另一个回调,例如viewWillAppearviewDidLoad没有任何好处,键盘将不会显示在首位。

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

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

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

此致 克里斯

1 个答案:

答案 0 :(得分:1)

我想我找到了答案。使用界面构建器添加搜索栏时,您可以通过两种方式执行此操作:"搜索栏"和"搜索栏和搜索显示控制器"。

我正在使用第二个,并且遇到了你描述的同样问题。我只能在" viewDidAppear"上调用键盘(使用becomeFirstResponder)。但是,如果你这样做只添加它的工作搜索栏。现在我可以在" viewDidLoad"上调用yesFirstResponder。键盘与视图本身一起显示。

我的工作意味着更多,但实际上并不多。您必须将控制器设置为搜索栏的代理。我为结果添加了一个列表视图,并使我的控​​制器成为其委托及其数据源。