我在视图底部有一个搜索栏。问题是,每当我在键盘上键入内容时,搜索栏仍停留在底部,而我无法查看正在输入的内容。我想在键盘弹出时动态向上移动它,然后在键盘消失后恢复其原始位置。不幸的是,搜索栏必须位于我的应用程序的底部,并且卡在其中。

是否只有在出现键盘时才可以向上移动搜索栏?任何代码片段都将非常有用。

最佳答案

最好的选择可能是在UISearchBarDelegate协议中使用–searchBarShouldBeginEditing:。

它看起来像这样:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
    CGRect newFrame = //some rect
    mySearchBar.frame = newFrame;
    return YES;//this is important!
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
    CGRect originalFrame = //the original frame
    mySearchBar.frame = originalFrame;
    return YES;
}


编辑:其他答案之一建议使用UIKeyboard通知,但这可能会造成混淆。但是,它确实具有每次键盘出现时都可以工作的优势,而不是仅在UISearchBar是第一响应者时工作。

编辑2:
Mayur Joshi建议使用动画,可以这样做:

[UIView animateWithDuration:duration
            animations:^{
                //what you want to animate (in this case, the search bar's frame)
            }
            completion:^(BOOL finished){
                //what to do when the animation finishes
            }];


编辑3:
如果您不想遮挡搜索栏后面的视图,则每当搜索栏向上移动时,都必须缩小其高度。它可以与代码放在同一位置以为搜索栏添加动画效果。

关于iphone - iPhone键盘隐藏搜索栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7440889/

10-13 03:55