【问题标题】:How to dismiss keyboard without pressing Return key nor any other controllable button如何在不按 Return 键或任何其他可控按钮的情况下关闭键盘
【发布时间】:2011-10-21 19:39:18
【问题描述】:

我看过很多关于如何在按下回车键或操作某些按钮时隐藏键盘的示例。

但我的情况不同:如何在 TextField 外部单击时关闭键盘?想象一下,用户点击了一个 TextField 来输入一些文本......但他很遗憾,只想隐藏键盘并像在文本字段中点击之前一样继续查看屏幕

我不知道怎么做

提前致谢

佩德罗

【问题讨论】:

    标签: ios keyboard


    【解决方案1】:

    实现 touchesBegan 并将文本字段作为第一响应者。

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        [activeTextField resignFirstResponder];
    }
    

    如果您有多个文本字段,您应该在 activeTextField 实例变量中存储一个指向当前活动字段的指针。为此,您必须将 self 设置为所有文本字段的委托并实现此委托方法:

    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {
        activeTextField = textField;
    }
    

    【讨论】:

    • 非常感谢...这正是我所需要的
    【解决方案2】:

    试试这个代码。

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event 
    {
     UITouch *touch = [touches anyObject];
     if([touch view] == self.view)
        [textField resignFirstResponder];
    }
    

    【讨论】:

    • 这里真的没有理由检查if([touch view] == self.view),因为他希望文本字段之外的所有触摸都关闭键盘,如果用户触摸文本字段(或处理触摸本身的其他元素)。
    【解决方案3】:

    您可以在外部事件的修饰上进行 rasignfirstresponder。
    否则看看这个答案
    iphone, dismiss keyboard when touching outside of UITextField

    【讨论】:

    • 这不起作用,因为文本字段不会接收触摸事件,除非它们来自文本字段内部。否则一些其他视图将获得触摸事件。触摸外部是当您开始按下按钮然后通过将手指从按钮上拖开来取消。
    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多