触摸UIView以外的地方

时间:2012-06-07 00:39:42

标签: iphone objective-c ios

-(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];
}

有人可以帮助我,这只会检测子视图内的触摸,而不是主视图。

1 个答案:

答案 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文档的链接:

http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizers/GestureRecognizers.html