我有两件事互相碰撞。每个人都可以正常工作。但我不知道如何让它们兼顾。这是事情,我有一些文本字段和按钮,我添加了当用户触摸背景时解除键盘,但这个方法也被调用,然后用户尝试单击按钮..所以按钮不再工作。这是我的键盘解雇的一些代码,也许任何人都会知道如何正确实现这一点。
-(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];
答案 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];
}
希望这会对你有所帮助。 感谢