-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
NSLog(@"The tag %i",touch.view.tag);
if( [touch.view isKindOfClass:[UIScrollView class]] ) {
for( UIView *checkview in [self.view subviews] ) {
if( [checkview tag] == 1 ) {
infoIsVisibile = NO;
[info removeFromSuperview];
}
}
}
[super touchesBegan:touches withEvent:event];
}
有人可以帮助我,这只会检测子视图内的触摸,而不是主视图。
答案 0 :(得分:2)
您可以将UIGestureRecognizer连接到您感兴趣的视图。
(一般来说,手势识别器是一种更强大的机制,用于检测任意视图中的触摸,并且它们可以很好地处理像UIWebViews和UIScrollViews这样倾向于使用传统触摸事件的视图。)
这是一个片段:
UITapGestureRecognizer *singleFingerDTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleDoubleTap:)];
singleFingerDTap.numberOfTapsRequired = 2;
[self.theView addGestureRecognizer:singleFingerDTap];
[singleFingerDTap release];
(此代码来自下面的链接文档 - 请注意,self.theView可能是存储为当前对象成员的一些随机视图。)
你会很高兴(或震惊)手势识别器能够简化你的代码并减少怪异。
以下是Apple文档的链接: