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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章