私は PagingEnabled で UIScrollView を使用しています。UIScrollView 内に 3 つの UIImage を追加しました。順調です。
たとえば、ユーザーがUIImageの2つの正方形の間をタップしたかどうかをどのように検出できるか疑問に思っています:添付の画像では、ユーザーが正方形1と2の間をタップしたかどうか、またはユーザーが正方形2と3の間をタップしたかどうかをどのように検出できますか?
何か案は?
ありがとう。
私は PagingEnabled で UIScrollView を使用しています。UIScrollView 内に 3 つの UIImage を追加しました。順調です。
たとえば、ユーザーがUIImageの2つの正方形の間をタップしたかどうかをどのように検出できるか疑問に思っています:添付の画像では、ユーザーが正方形1と2の間をタップしたかどうか、またはユーザーが正方形2と3の間をタップしたかどうかをどのように検出できますか?
何か案は?
ありがとう。
画像ビューにジェスチャーを追加
imageView.userInteractionEnabled = YES;
UIPinchGestureRecognizer *pgr = [[UIPinchGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePinch:)];
pgr.delegate = self;
[imageView addGestureRecognizer:pgr];
[pgr release];
:
:
- (void)handlePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
//handle pinch...
}
単一または複数のタップを検出するUITapGestureRecognizer
には、 のサブクラスを使用しUIGestureRecognizer
ます。-classによってデフォルト値が に変更されるため、userInteractionEnabled
プロパティをに設定することを忘れないでください。YES
UIImageView
NO
self.imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
// Set the number of taps, if needed
[tapRecognizer setNumberOfTouchesRequired:1];
// and add the recognizer to our imageView
[imageView addGestureRecognizer:tapRecognizer];
- (void)handleTap:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
// if you want to know, if user tapped between two objects
// you need to get the coordinates of the tap
CGPoint point = [sender locationInView:self.imageView];
// use the point
NSLog(@"Tap detected, point: x = %f y = %f", point.x, point.y );
// then you can do something like
// assuming first square's coordinates: x: 20.f y: 20.f width = 10.f height: 10.f
// Construct the frames manually
CGRect firstSquareRect = CGRectMake(20.f, 20.f, 10.f, 10.f);
CGRect secondSquareRect = CGRectMake(60.f, 10.f, 10.f, 10.f);
if(CGRectContainsPoint(firstSquareRect, point) == NO &&
CGRectContainsPoint(secondSquareRect, point) == NO &&
point.y < (firstSquareRect.origin.y + firstSquareRect.size.height) /* the tap-position is above the second square */ ) {
// User tapped between the two objects
}
}
}