在失去专注于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

    上一篇: resign keyboard when losing focus on uisearchbar

    下一篇: UIView take away first responder status