在一个view上的添加了UITapGestureRecognizer,再添加一个UIButton,button不响应
@追风 2012/12/26
首先让UITapGestureRecognizer不要吃掉子窗口的事件:
tapGesture.cancelsTouchesInView = NO;
然后设置自身的代理:
tapGesture.delegate = self;
最后实现代理里面这个方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
//过滤掉UIButton,也可以是其他类型
if ( [touch.viewisKindOfClass:[UIButtonclass]])
{
returnNO;
}
return YES;
}
第二种方法:
UITapGestureRecognizer *tapGr = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(viewTapped:)];
[self.viewaddGestureRecognizer:tapGr];
[tapGr release];
-(void)viewTapped:(UITapGestureRecognizer*)tapGr
{
CGPoint pt=[tapGr locationInView:self.view ];
if (CGRectContainsPoint( m_btnSubmit.frame, pt ))
{
[selfLogin:m_btnSubmit];
return;
}
[m_nameFieldresignFirstResponder];
[m_pwdFieldresignFirstResponder];
}
第三种方法:
把当前的View更改成UIControl,并设置UIControl的事件。
UIControl *control = [[UIControl alloc] initWithFrame:self.view.frame];
[control addTarget:self action:@selector(viewTapped:) forControlEvents:UIControlEventTouchUpInside];
self.view = control;
[control release];