关闭键盘和按钮

Posted

技术标签:

【中文标题】关闭键盘和按钮【英文标题】:Dismiss keyboard and button 【发布时间】:2012-11-05 10:48:54 【问题描述】:

我有两件事相互碰撞。每个单独工作都很好。但我不知道如何让它们同时工作。事情是这样的,我有一些文本字段和按钮,当用户触摸背景时,我添加了关闭键盘,但是这个方法也会被调用,然后用户尝试点击按钮。所以按钮不再起作用。这是我的键盘关闭的一些代码,也许有人会知道如何正确实现。

-(void)dismissKeyboard 
    NSLog(@"resign");
    [[_textFields objectAtIndex:0] resignFirstResponder];
    [[_textFields objectAtIndex:1] resignFirstResponder];
    [[_textFields objectAtIndex:2] resignFirstResponder];
    [[_textFields objectAtIndex:3] resignFirstResponder];



UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                               initWithTarget:self
                               action:@selector(dismissKeyboard)];
[TableControll.view addGestureRecognizer:tap];

[TableControll.view addSubview:save];
[button addTarget:self action:@selector(goAdvanced)
 forControlEvents:UIControlEventTouchUpInside];
[save addTarget:self action:@selector(saveInfo)
     forControlEvents:UIControlEventTouchUpInside];

【问题讨论】:

【参考方案1】:

尝试修改这部分代码

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                               initWithTarget:self
                               action:@selector(dismissKeyboard)];
tap.cancelsTouchesInView = NO;
[TableControll.view addGestureRecognizer:tap];

希望对你有帮助!

【讨论】:

【参考方案2】:

可能是因为gestureRecognizer,为了区分点击事件和按钮事件使用this。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch 

    if ([touch.view isKindOfClass:[UIButton class]]) 
        return NO;
    
    return YES;

【讨论】:

【参考方案3】:

您好,只需在按钮后面添加一个按钮,按钮宽度将为 320,高度为 480,根据 iphone 尺寸现在您在背景中有一个按钮,在该按钮上有其他按钮。所以现在您可以为这些按钮提供不同的方法按钮。试试看,告诉我它是否有效。

编码愉快!!!!!!!

【讨论】:

【参考方案4】:

在下面的委托方法中

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

包括条件

 if([touch.view isKindOfClass:[UIButton class]])
    
        return NO;
    

和其他你需要激活触摸的控件

【讨论】:

【参考方案5】:

您可以使用触摸开始功能来代替addGestureRecognizer: 例如:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    NSLog(@"resign");
    [textfield1 resignFirstResponder];
    [textFiled2 resignFirstResponder];


希望这会对您有所帮助。 谢谢

【讨论】:

以上是关于关闭键盘和按钮的主要内容,如果未能解决你的问题,请参考以下文章

移动 Safari - 使用 Javascript 关闭键盘

当用户按下键盘上的返回按钮时如何关闭键盘?

即使在键盘关闭时也保持搜索栏取消按钮的颜色

用于自定义键盘的 iOS 键盘关闭按钮

resignFirstResponder 不关闭键盘

关闭 UISearchBar 键盘而不影响取消按钮