UILongPressGestureRecognizer绑定仅适用于UIImageView

时间:2014-11-27 09:01:46

标签: ios objective-c uiimageview uiimage uigesturerecognizer

我正在开发基于增强现实的iOS应用程序。它假设要做的是用户将通过UISlider设置他与墙的距离。然后,他将从图库中选择一张图片,看看它在墙上的样子。应用程序应相应地将UIImage缩放到用户与墙壁的距离,用户可以拖动它以查看它在墙上的外观。

我想在添加的UILongPressGestureRecognizer上应用UIImage,以便可以删除它,即点击暂停和删除。
这是我用于导入已存在于我库中的图像的代码我稍后将从库中导入:

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;

1 个答案:

答案 0 :(得分:0)

您已在自定义视图中添加[self.customCam addGestureRecognizer:self.myImageView];首先添加图片视图,然后在myImageview中添加self.lpgr。 用此

替换此行[self.customCam addGestureRecognizer:self.lpgr];

[myImageView addGestureRecognizer:self.lpgr];并尝试