在键盘动画之前运行代码

时间:2013-01-29 13:15:35

标签: iphone objective-c xcode

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

我目前正在运行以下代码来检测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!");
                      }
     ];
}

我可以延迟键盘的显示吗?也许停止它,然后在完成处理程序中显示它?

2 个答案:

答案 0 :(得分:2)

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

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

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

有很多选择。我想

name:UIKeyboardWillShowNotification

也可用。只要检查一下它是否应该有效。

干杯快乐的编码。!!

答案 1 :(得分:1)

是的,还有searchBarShouldBeginEditing:。您可以制作动画,然后返回YES