向 Scrollview 内的 UIImageView 添加长按手势

Posted

技术标签:

【中文标题】向 Scrollview 内的 UIImageView 添加长按手势【英文标题】:Adding long press gesture to UIImageView inside Scrollview 【发布时间】:2014-09-08 02:49:39 【问题描述】:

我已经研究了几个小时,但似乎没有任何效果。我有一个 UIScrollView 作为 IBOutlet 并通过代码添加两个 UIImageViews。一张是背景图片,第二张是照片。这里一切正常。我正在尝试向第二张照片添加长按手势,但它似乎不起作用。这是我的代码。我希望有人能看到我的问题。

    // loop thru images array

    UIImage *bgFrame = [UIImage imageNamed:@"photo-frame.png"];
    UIImageView *bgImageView = [[UIImageView alloc] initWithImage:bgFrame];
    bgImageView.frame = CGRectMake(posX, posY, 100, 100);
    [self.scroll addSubview:bgImageView];

    NSString *photoName = [self.photoArray objectAtIndex:i];
    UIImage *photo = [self.utils getClientPhoto:photoName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:photo];
    imageView.userInteractionEnabled = YES;
    imageView.frame = CGRectMake(6, 9, 89, 71);
    imageView.tag = i;
    [bgImageView addSubview:imageView];

    // add long press for deletion
    UILongPressGestureRecognizer *lPressed = [[UILongPressGestureRecognizer alloc]
                                              initWithTarget:self action:@selector(imageLPressed:)];
    lPressed.delegate = self;
    lPressed.minimumPressDuration = 0.4;
    [imageView addGestureRecognizer:lPressed];

【问题讨论】:

【参考方案1】:

imageView.userInteractionEnabled = YES; 不需要,它总是可以正常工作。将委托设置为 gestureRecognizer 也是可选的。首先尝试将 imageView 添加到 self.scroll 子视图而不是 bgImageView。之后检查您的 scrollView 内容大小,如果您的图像超出 dat 大小,则它可以可见但不可用。尝试用 uibutton 替换 imageview 并检查它的 uitouchupinside 事件。

【讨论】:

【参考方案2】:

bgImageViewimageView 上启用UserInteraction

【讨论】:

以上是关于向 Scrollview 内的 UIImageView 添加长按手势的主要内容,如果未能解决你的问题,请参考以下文章

ScrollView 内的 TableView

TouchableOpacity 内的 ScrollView

在 ScrollView 中向右对齐视图

ScrollView 内的多个 ListView

ScrollView 内的图像网格

ScrollView 内的 Recyclerview 滚动不顺畅