2016-12-08 10 views
0

私は、UIViewを含むscrollviewを持っています。ここにはテキストのラベルがあります。私が望むのは、タップジェスチャー認識機能を追加してビューを解除することです。UIGesture特定の領域への認識器

私は、次の試してみました:

/* Tap */ 

    UITapGestureRecognizer *singleFingerTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
              action:@selector(handleSingleTap)]; 
    singleFingerTap.numberOfTapsRequired = 1; 
    [self.mainScroll addGestureRecognizer:singleFingerTap]; 

    self.containerView = [UIView new]; 
    self.containerView.backgroundColor = [UIColor whiteColor]; 
    [self.mainScroll addSubview:self.containerView]; 

しかし、コールバックの出会いをユーザーが(テキスト付きビューを含む)、スクロールの任意の場所をタップすると。それを防ぐ方法は?

答えて

0

タッチが特定の矩形内に起こったかどうかを確認するためにCGRectContainsPointを使用し、その後、ジェスチャーからタッチ位置を取得します。そうであれば、あなたの却下を実行し、そうでなければ、タッチを無視してください。

+0

サンプルコードはいいと思います。 –

1

scrollviewにgestureRecognizerを追加しています。必要に応じてemtyビューを作成し、gestureRecognizerを追加することができます。

-1

UITapGestureRecognizerコールバックからタッチポイントを取得し、特定の場合に発生するかどうかを確認してください。CGRectあなたのhandleSingleTap機能で

- (void) handleSingleTap:(UITapGestureRecognizer *)tapRecognizer { 
    CGPoint touchPoint = [tapRecognizer locationInView:nil]; 
    if (!CGRectContainsPoint(self.containerView.frame, touchPoint)) { 
     //Tap Touch point is NOT on the container 
    } 
} 
+0

質問を読まれましたか?私はユーザーがコンテナビューをタップするときにNOTと呼ばれるブロックが必要です。 –

+0

サンプルコード –

+0

を含めるように答えを編集サンプルコードをテストしましたか? –

関連する問題