在失去专注于uisearchbar的情况下辞职键盘
我正在我的应用的导航栏中创建一个UISearchBar选项。 我的应用程序由多个视图和子视图组成。 我有这个主视图,其中有3个对自己的其他意见。 其中一个是空的(现在),另外两个有桌面浏览。
我希望我的键盘在搜索时显示,当我正在进行实际搜索时隐藏,或者当我在触摸屏之外触摸/点击时隐藏。 按需要使用searchbardelegate。
我可以通过以下方式使用[searchBar resignFirstResponder]来隐藏键盘。
当我触摸屏幕的空白部分使用
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([mySearchBar isFirstResponder] && [touch view] != mySearchBar) {
[mySearchBar resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}
我似乎无法做到的是让它响应触摸我的2个桌面视图中的一个。 或者当我重新填充主视图来完全包含不同的东西时。
我试着改变touchesbegan方法来在接触桌面时退出搜索栏,但它迄今还没有工作。
我尝试了一些我亲爱的朋友先生发现的其他东西。 谷歌,但它似乎都是我需要的东西。
任何人有任何想法可以解决这个问题?
编辑:它看起来如此,当使用断点时,touchesbegan方法确实响应backgroundview,但它不响应当我触摸任何tableviews或导航栏(包含uisearchbar)。
解决了!
- (BOOL) searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
[self.myViewController1.customView1 setUserInteractionEnabled:NO];
[self.myViewController2.customView2 setUserInteractionEnabled:NO];
[searchBar setShowsCancelButton:YES animated:[mySettings animation]];
return YES;
}
我开始关闭我的2个子视图上的userInteraction,此刻我开始使用searchBar。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([self.mySearchBar isFirstResponder] && [touch view] != self.mySearchBar)
{
[self.mySearchBar resignFirstResponder];
[self.myViewController1.customView1 setUserInteractionEnabled:YES];
[self.myViewController2.customView2 setUserInteractionEnabled:YES];
}
[super touchesBegan:touches withEvent:event];
}
然后,当我点击/点击/触摸外部searchBar我首先辞去键盘,这是第一响应仍然和后,我设置userInteraction为2子视图。 这样做的顺序至关重要!
这段代码允许你在一个mainViewController中退出键盘,即使它拥有大量子视图时也是如此。
你有没有试过这个,
UISearchBar *searchBar;
接下来设置UISearchBar
的Getter和Setter属性。
并调用任何方法
[searchBar resignFirstResponder];
链接地址: http://www.djcxy.com/p/7699.html