0

我的应用程序中有一个搜索栏,当焦点放在搜索框中时,我希望在键盘出现之前出现一些动画。在显示键盘之前,有没有可以用来拦截的委托方法?

我目前正在运行以下代码来检测 UISearchBar 何时被激活:

-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
    NSLog(@"Begin Editing");
    CGRect newFrame = searchBar.frame;
    newFrame.origin.y = 0;
    [UIView animateWithDuration:0.25
                      animations:^{
                          searchBar.frame = newFrame;
                          [searchBar layoutSubviews];
                      }
                      completion:^(BOOL finished){
                          NSLog(@"Done!");
                      }
     ];
}

无论如何我可以延迟键盘的显示吗?也许暂停它然后在完成处理程序中显示它?

4

2 回答 2

2

您需要为您的代码添加一个通知中心。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

然后声明一个名为keyboardDidShow: 的方法并将动画代码添加到其中。

有很多选择。我猜

name:UIKeyboardWillShowNotification

也可用。只需检查它是否在那里,它应该可以工作。

干杯快乐编码.!!

于 2013-01-29T13:22:49.097 回答
1

Yes, there is also searchBarShouldBeginEditing:. You can do your animations, then return YES.

于 2013-01-29T13:23:03.697 回答