我在视图底部有一个搜索栏。问题是,每当我在键盘上键入内容时,搜索栏仍停留在底部,而我无法查看正在输入的内容。我想在键盘弹出时动态向上移动它,然后在键盘消失后恢复其原始位置。不幸的是,搜索栏必须位于我的应用程序的底部,并且卡在其中。
是否只有在出现键盘时才可以向上移动搜索栏?任何代码片段都将非常有用。
最佳答案
最好的选择可能是在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/