我在另一个文件中有一个带有数据源/委托的表格视图。此外,表格视图上方还有一个搜索栏,属于第一个文件。在滚动时隐藏键盘,我需要调用:
[self.searchBar resignFirstResponder]
但是
(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
方法在委托中。那么在这种情况下滚动时如何隐藏键盘?
谢谢!
我在另一个文件中有一个带有数据源/委托的表格视图。此外,表格视图上方还有一个搜索栏,属于第一个文件。在滚动时隐藏键盘,我需要调用:
[self.searchBar resignFirstResponder]
但是
(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
方法在委托中。那么在这种情况下滚动时如何隐藏键盘?
谢谢!
您可以在 scrollviewwillbegindragging 中发送通知。表视图委托:
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
[[NSNotificationCenter defaultCenter] postNotificationName:@"resign" object:nil];
}
搜索栏代表:
-(void)viewDidLoad{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(goTo:) name:@"resign" object:nil];
}
-(void)goTo:(NSNotification*)notification {
[self.searchBar resignFirstResponder];
}
有很多方法可以做,下面是其中的几个。
选项 1:在初始化表格对象后添加以下行
[yourTableView setKeyboardDismissMode:UIScrollViewKeyboardDismissModeOnDrag];
或者
选项 2:获取您的 tableview 的超级视图(我期望它作为 aViewcontrollerObj.view)并强制结束其编辑。
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
UIView *tableviewSuperView = yourTableView.superview;
[tableviewSuperView endEditing:true];
}
希望对快乐编码有所帮助:)