代码之家  ›  专栏  ›  技术社区  ›  tcurdt

隐藏键盘

  •  0
  • tcurdt  · 技术社区  · 17 年前

    我有一个 搜索栏 在委托方法中,我在清除文本字段时隐藏键盘:

    - (void)searchBar:(UISearchBar *)filterBar textDidChange:(NSString *)filterText {
        NSLog(@"filter: %@", filterText);
    
        if ([filterText length] == 0) {
            NSLog(@"hiding keyboard");
            [filterBar resignFirstResponder ];
    

    辞职第一响应者 并隐藏键盘-你只是看不到它,因为它马上就回来了。我通过观察键盘显示/隐藏事件发现了这一点。

    那么,为什么键盘会再次显示?我怎样才能防止这种情况?

    我已经尝试过遍历的所有子视图 搜索栏

    更新:

    4 回复  |  直到 17 年前
        1
  •  1
  •   Lily Ballard    17 年前

    我建议你 停止 试着这么做。当字段清空时隐藏键盘是完全不标准的行为,用户也不会期望这样。在这种情况下,最好让你的行为与整个系统中的所有其他应用程序保持一致。

        2
  •  1
  •   Amagrammer    17 年前

    我知道你已经接受了答案,不打算继续这样做,但我 是

    - (BOOL)canBecomeFirstResponder
    {
       return !preventingKeyboardAppearance; // so to speak
    }
    
    - (void)searchBar:(UISearchBar *)filterBar textDidChange:(NSString *)filterText 
    {
       // handle text
    
       preventingKeyboardAppearance = YES;
       [filterBar resignFirstResponder];
    }
    

        3
  •  0
  •   Erik Abele    17 年前

    我基本上同意凯文的观点,但这对你没什么帮助,所以我说:

    尝试在搜索栏的子视图中循环,并找到属于UITextField类的同级。然后,将此文本字段的delegate属性设置为ViewController的类并在其中处理回调(例如textViewShouldReturn),或者直接在文本字段上调用resignFirstResponder。前者显然需要在init/load时完成,而后者可以在现有的textDidChange回调中完成。

    这里还有一些提示:

    http://discussions.apple.com/thread.jspa?threadID=1479468&tstart=0 http://discussions.apple.com/thread.jspa?messageID=8176608

        4
  •  0
  •   jayesh kavathiya    14 年前
    -(BOOL)textFieldShouldReturn:(UITextField *)textField {
            [textField resignFirstResponder];
    
            return YES;    
        }
    

    [textField resignFirstResponder]有一段时间不工作,请使用此选项
    [YorTextFieldName辞职FirstResponder]它工作正常,而不是任何其他