UILongPressGestureRecognizer 绑定仅适用于 UIImageView [重复]
Posted
技术标签:
【中文标题】UILongPressGestureRecognizer 绑定仅适用于 UIImageView [重复]【英文标题】:UILongPressGestureRecognizer bound only applicable on UIImageView [duplicate] 【发布时间】:2014-11-27 09:01:46 【问题描述】:我正在开发一个基于增强现实的 ios 应用。它应该做的是用户将通过UISlider
设置他与墙壁的距离。然后他会从画廊中选择一张图片,看看它在墙上的样子。应用程序应根据用户与墙壁的距离缩放UIImage
,用户可以拖动它来查看它在墙上的样子。
我想在添加的UIImage
上应用UILongPressGestureRecognizer
,以便可以将其删除,即点击按住并删除。 这是我用于导入已在我的库中的图像的代码,稍后我将从图库中导入:
self.myImage = [UIImage imageNamed:@"myimage.png"];
self.myImageView = [[UIImageView alloc] initWithImage:self.myImage];
self.myImageView.userInteractionEnabled = YES;
CGRect cellRectangle;
self.myImageView.contentMode = UIViewContentModeScaleAspectFit;
cellRectangle = CGRectMake(0, 0, self.myImage.size.width/5, self.myImage.size.height/5);
UILongPressGestureRecognizer
的代码如下:
self.lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPressGestures:)];
self.lpgr.minimumPressDuration = 2.0; //seconds
self.lpgr.accessibilityFrame = cellRectangle;
[self.customCam addGestureRecognizer:self.lpgr];
其中customCam
是为 AR 显示相机的视图。
- (void)handleLongPressGestures:(UILongPressGestureRecognizer *)sender
if ([sender isEqual:self.lpgr])
if (sender.state == UIGestureRecognizerStateBegan)
CGPoint p = [self.lpgr locationInView:self.myImageView];
NSLog(@"TapLong Run on points %@",NSStringFromCGPoint(p));
此代码的问题在于它将UILongPressGestureRecognizer
应用于所有customCam
视图。
如何绑定它以使其保留在myImageView
内。
我也试过这样做:
[self.myImageView addGestureRecognizer:self.lpgr];
但这不起作用,我还添加了这个self.myImageView.userInteractionEnabled = YES;
【问题讨论】:
[self.customCam addGestureRecognizer:self.lpgr];你被添加到这里,保留这个 self.myImageView @Balu 我试过这个,但当时什么也没做。如果条件,它永远不会到达函数“handleLongPressGestures”!但在 customCam 上确实如此。 我在想的是设置另一个 if 条件,如果手势坐标在 UIImageView 坐标内,那么它将执行该操作。那么你能帮我解决这个问题吗? 【参考方案1】:您添加[self.customCam addGestureRecognizer:self.myImageView];
的位置首先在自定义视图中添加图像视图,然后在myImageview 中添加self.lpgr。
用这个替换这一行[self.customCam addGestureRecognizer:self.lpgr];
[myImageView addGestureRecognizer:self.lpgr]
;并尝试
【讨论】:
试过但没用。没有错误,但代码没有运行“handleLongPressGestures”方法的功能。 handleLongPressGestures 叫什么? 通过添加这一行'[self.customCam addGestureRecognizer:self.myImageView];'并按照您所说的替换另一条线。我收到此警告“无法识别的选择器已发送到实例”,但它没有显示图像。似乎 customCam 层位于 myImageView 层之上。 ***.com/questions/15870756/… 看看这个 感谢您的帮助 :) 我已经解决了这个问题。以上是关于UILongPressGestureRecognizer 绑定仅适用于 UIImageView [重复]的主要内容,如果未能解决你的问题,请参考以下文章