flu*_*ang 1 iphone uigesturerecognizer
嘿,伙计们,我removeGestureRecognizer:从一个角度来看遇到了一个问题,
我想做的是doubleTap其中一个imageView,并删除tapped imageView的singleTap手势,而不删除其他imageView单一的手势.
这是我如何生成视图,手势和机制:
.H
UITapGestureRecognizer *singleTap;
Run Code Online (Sandbox Code Playgroud)
.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]);
}
Run Code Online (Sandbox Code Playgroud)
但是我写的这些行找不到与双击图像视图相连的singleTap手势.
当NSLog .gestureRecognizers count,它仍然是2,它删除的是最后imageView的singleTap手势,它变为1,这是正确的.
我无法找到第一个和第二个,找到它们的任何想法?谢谢你阅读:)
Ole*_*anu 10
您应该循环遍历添加手势的UIView类的gestureRecognizers属性,如下所示:
for (imageView in tryToFindYou)
{
if ([imageView isKindOfClass:[UIImageView class]] && imageView.tag == ((UITapGestureRecognizer *)sender).view.tag)
{
for(UIGestureRecognizer *gesture in [imageView gestureRecognizers])
{
if([gesture isKindOfClass:[UITapGestureRecognizer class]])
{
if (gesture.numberOfTapsRequired == 1)
[imageView removeGestureRecognizer:gesture];
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6257 次 |
| 最近记录: |