关闭键盘和按钮

时间:2012-11-05 10:48:54

标签: objective-c ios xcode

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

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

5 个答案:

答案 0 :(得分:2)

尝试修改代码的这一部分

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

希望它可以帮到你!

答案 1 :(得分:1)

可能是因为gestureRecognizer,区分tap事件和按钮事件使用此。

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

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

答案 2 :(得分:0)

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

快乐编码!!!!!!!

答案 3 :(得分:0)

在下面的委托方法

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

包括像

这样的条件
 if([touch.view isKindOfClass:[UIButton class]])
    {
        return NO;
    }

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

答案 4 :(得分:0)

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

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

}

希望这会对你有所帮助。 感谢