2012-10-11 51 views
0

我有一个UIScrollView内一对夫妇的UITextField和UIButton的和这个滚动视图是我的UIViewController的视图中。我增加了一个触摸手势识别驳回键盘如果显示:UITapGestureRecognizer到dimiss键盘覆盖按钮

UITapGestureRecognizer *tapToDismissKeyboard = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)]; 
    [tapToDismissKeyboard setCancelsTouchesInView:NO]; 
    tapToDismissKeyboard.delegate = self; 
    [self.view addGestureRecognizer:tapToDismissKeyboard]; 

#pragma mark UITapGestureRecognizerDelegate 
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    if ([touch.view isDescendantOfView:self.signupButton_] || [touch.view isDescendantOfView:self.profilePictureImageView_] || [touch.view isDescendantOfView:self.signupUsingFacebook_]) { 
     return NO; // ignore the touch 
    } 

    return YES; // handle the touch 
} 

的问题是,当我点击的登入/注册按钮,它仍检测敲击手势,其中其实我是想按钮触摸。

回答

0

如果您在该视图中的按钮比在该视图内不会采用按钮触摸创建的视图内插入所有内容,然后仅为该视图添加手势识别器,并为该视图创建另一个视图,则可以在整个视图中添加您的添加手势识别器你的按钮它会工作。

0

所触摸的观点应该是按钮本身,这样做

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    if (touch.view==self.signupButton_) { 
     return NO; // ignore the touch 
    } 

    return YES; // handle the touch 
} 

你,因为这种观点您尝试点击了按钮应该工作,isDescendantOfView返回false ......同样的,如果你想只是让你通过任何按键可以做

if([v isKindOfClass:[UIButton class]]) 
{ 
    return NO; 
} 

希望帮助

丹尼尔

+0

我这样做也是一样,它并没有帮助..我用[UIControl类] – adit

+0

具有u跟着它通过一个断点?什么是touch.view类? – Daniel

0

用于这项工作各地将设置按钮的姿势,以及和把代码

[tapToDismissKeyboard requireGestureRecognizerToFail:buttonTapGestureRecognizer];