为啥辞职急救人员不隐藏键盘?

Posted

技术标签:

【中文标题】为啥辞职急救人员不隐藏键盘?【英文标题】:Why resignFirst Responder does not hide keyboard?为什么辞职急救人员不隐藏键盘? 【发布时间】:2013-11-21 16:18:52 【问题描述】:

这是我的自定义 UITextField 类:

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
    if (self) 
        self.delegate = self;

        [self addTarget:self action:@selector(hideKeyboard) forControlEvents:UIControlEventTouchUpOutside];

    
    return self;


- (void) hideKeyboard

    NSLog(@"Clicked outside");
    [self resignFirstResponder];

但是,当我在文本字段之外单击时,hideKeyboard 永远不会被调用。谁能解释为什么以及我应该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您注册的事件只有在您开始触摸文本字段内并完成触摸文本字段外时才会发生。

如果在文本域外开始触摸,文本域不会得到任何事件。

向包含文本字段的视图添加触摸手势识别器。当该事件被触发时,请退出当前的第一响应者。

【讨论】:

【参考方案2】:

您的触摸可能会被其他正在使用它们的 UIControl 吞噬。没有看到你的层次结构是不可能的。

但是,即使您在空白 UIView 上只有 1 个 UITextField,我也不建议这样做;它不能很好地扩展,如果您向视图添加另一个 UIControl,以后可能会导致奇怪的错误。如果在同一个 UIView 中有这个 TextField 一个 UIButton 会发生什么?

相反,我会将超级视图更改为 UIControl(UIView 的子类),然后使用 UIControlEventTouchUpInside 来触发关闭键盘的方法。

【讨论】:

以上是关于为啥辞职急救人员不隐藏键盘?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 iOS 9 中隐藏顶部键盘栏

为啥 Ionic 键盘事件不触发?

软键盘不存在,无法隐藏键盘 - Appium android

UIPickerView:键盘不隐藏

使用 Appium 时,Android 物理设备中的键盘并不总是隐藏

如何隐藏键盘助手栏