やあみんな、私はremoveGestureRecognizer:
ビューからしようとしたときに問題に遭遇しました、
私がやりたいのは s のdoubleTap
1 つで、他の s singleTap Gesture を削除せずにimageView
、タップされたsingleTap Gesture を削除します。imageView
imageView
ビュー、ジェスチャー、およびメカニズムを生成する方法は次のとおりです。
.h
UITapGestureRecognizer *singleTap;
.m
- (void)viewDidLoad
{
[super viewDidLoad];
NSInteger i;
for (i = 1; i <= 3; i++)
{
UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = CGRectMake(110, 70+80*(i-1), 100, 60);
imageView.backgroundColor = [UIColor whiteColor];
imageView.tag = i;
imageView.userInteractionEnabled = YES;
[self.view addSubview:imageView];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleMethod:)];
doubleTap.numberOfTapsRequired = 2;
singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleMethod:)];
[singleTap requireGestureRecognizerToFail:doubleTap];
[imageView addGestureRecognizer:doubleTap];
[imageView addGestureRecognizer:singleTap];
}
}
- (void)singleMethod: (id)sender
{
NSLog(@"SingleTap");
}
- (void)doubleMethod: (id)sender
{
NSLog(@"%d",[((UITapGestureRecognizer *)sender).view.gestureRecognizers count]);
UIImageView *imageView = nil;
NSArray *tryToFindYou = [self.view subviews];
for (imageView in tryToFindYou)
{
if ([imageView isKindOfClass:[UIImageView class]] && imageView.tag == ((UITapGestureRecognizer *)sender).view.tag)
{
[imageView removeGestureRecognizer:singleTap];
}
}
NSLog(@"%d",[((UITapGestureRecognizer *)sender).view.gestureRecognizers count]);
}
しかし、私が書いたこれらの行は、ダブルタップされたimageViewに添付されたsingleTap Gestureを正確に見つけることができません.
を NSLog すると.gestureRecognizers count
2 のままで、外したのは最後imageView
の singleTap Gesture で、1 になりました。これは正しいです。
1 番目と 2 番目のものを見つけることができません。それらを見つけるためのアイデアはありますか? 読んでくれてありがとう :)