我有一个带有点击手势的 UIImageview,这样任何点击它都会创建一个白色背景的矩形视图。我可以在 imageview 上移动任何位置。像这样,我可以在该图像视图上创建无限视图。
现在我的问题是我想向新创建的视图添加双击手势,但是当我单击任何这些视图时,会在该视图上创建一个新视图。
但我想要的是,如果我点击一个视图,则不必在该视图上创建新视图。目前,即使我在 UIImageView 上创建了一个新视图,gestureRecognizer 也能识别 UIImageView。
我有一个带有点击手势的 UIImageview,这样任何点击它都会创建一个白色背景的矩形视图。我可以在 imageview 上移动任何位置。像这样,我可以在该图像视图上创建无限视图。
现在我的问题是我想向新创建的视图添加双击手势,但是当我单击任何这些视图时,会在该视图上创建一个新视图。
但我想要的是,如果我点击一个视图,则不必在该视图上创建新视图。目前,即使我在 UIImageView 上创建了一个新视图,gestureRecognizer 也能识别 UIImageView。
图像视图,
UIImageView *imageView = [[UIImageView alloc]init];
UITapGestureRecognizer * tapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(createNewView)];
[tapRecognizer setNumberOfTapsRequired:1]; // allow to create new view
UITapGestureRecognizer * tapRecognizerToFail = [[UITapGestureRecognizer alloc]init];
[tapRecognizer setNumberOfTapsRequired:2]; // to disallow more than 1 tap.
[tapRecognizer requireGestureRecognizerToFail:tapRecognizerToFail];
[imageView setGestureRecognizers:[NSArray arrayWithObjects:tapRecognizer,tapRecognizerToFail,nil]];
// 在 ImageView 上创建新视图
-(void)createNewView
{
UIView * view = [[UIView alloc]init];
UITapGestureRecognizer * tapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(newViewAction)];
[tapRecognizer setNumberOfTapsRequired:2];
[view addGestureRecognizer:tapRecognizer];
[imageView addSubview:view];
}
// 在新创建的视图上双击操作
-(void)newViewAction
{
// goes here
}
您可以使用 requireGestureRecognizerToFail: 声明两个识别器之间的依赖关系。
[secondaryGesture requireGestureRecognizerToFail:primaryGesture];