关闭键盘和按钮
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];
希望这会对您有所帮助。 谢谢
【讨论】:
以上是关于关闭键盘和按钮的主要内容,如果未能解决你的问题,请参考以下文章