在UIScrollView里面的UIImageView里面的UIImageView的UIPanGestureRecognizer

时间:2014-12-11 21:14:10

标签: ios uiscrollview uiimageview uigesturerecognizer uipangesturerecognizer

以下是我想要完成的想法,就好像这是图层一样

(TOP) - 注释引脚(30 x 30px)这是一个UIImageView。 - 带图片的UIViewImage - UIScrollView

这个想法是你可以在视图中按一个按钮,在屏幕中央显示一个新的图钉图像,但是你想把那个图钉重新定位到显示图片区域的位置。 此外,如果您再次按下按钮按钮,则会在屏幕中央放置其他引脚,将第一个引脚留在您已移动的位置。

我可以将UIPanGestureRecognizer添加到只有UIViewImage的小应用程序中,但是一旦这个视图位于视图中并且在uiscrollview内部,它就不起作用。

这是我的声明文件,只是UIScrollView的委托:

#import <UIKit/UIKit.h>

@interface ImageAnnotationVC : UIViewController <UIScrollViewDelegate>
{
    UIPanGestureRecognizer *panRecognizer;
}

这是我的scrollView初始化的方式:

- (void)viewDidLoad
{
    [super viewDidLoad];

    imageView_image.image = originalImage;
    scrollView.contentSize = originalImage.size;
    scrollView.delegate = self;
    scrollView.minimumZoomScale = 1.0;
    scrollView.maximumZoomScale = 100.0;    
}

这里是如何创建引脚并将其带到屏幕上的:

- (IBAction)button_addAnnotation:(id)sender
{
    UIImageView *annotationImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"push-pin-mini@3x.png"]];
    [annotationImage setCenter:CGPointMake(imageView_image.bounds.size.width / 2, imageView_image.bounds.size.height / 2)];

    panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
    [annotationImage addGestureRecognizer:panRecognizer];

    [imageView_image addSubview:annotationImage];
}

以下是目标方法:

- (void)handlePan:(UIPanGestureRecognizer *)recognizer
{
    NSLog("In handlePan");
}

问题是handlePan永远不会被调用。 有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,

UIImageView未启用用户互动,因此您必须为 图钉UIImageView及其超级视图{{1}启用用户互动}以便识别手势。