1

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

-(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];
4

5 回答 5

2

尝试修改这部分代码

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

希望对你有帮助!

于 2012-11-05T10:53:34.073 回答
1

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

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

    if ([touch.view isKindOfClass:[UIButton class]]) {
        return NO;
    }
    return YES;
}
于 2012-11-05T10:54:25.213 回答
0

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

快乐编码!!!!!!!

于 2012-11-05T10:54:17.013 回答
0

在下面的委托方法中

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

包括条件

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

以及激活触摸所需的其他控件

于 2012-11-05T10:55:36.890 回答
0

而不是addGestureRecognizer你可以使用触摸开始功能:例如:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"resign");
    [textfield1 resignFirstResponder];
    [textFiled2 resignFirstResponder];

}

希望这会帮助你。谢谢

于 2012-11-05T11:08:33.630 回答