2

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

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

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

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

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

问候,克里斯

4

1 回答 1

1

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

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

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

于 2012-08-03T22:00:02.827 回答