【问题标题】:UIGestureRecognizer not recognizingUIGestureRecognizer 无法识别
【发布时间】:2012-09-24 18:02:19
【问题描述】:

我试图创建一个可以拖动的标签。但是拖动的事件没有触发(用断点检查)。下面是代码。

 - (IBAction)InsertText:(UIBarButtonItem *)sender {

    UILabel *lblWatermark = [[UILabel alloc] initWithFrame:currentImage.frame];
    lblWatermark.text = @"Copyright";
    lblWatermark.userInteractionEnabled = YES;
    [lblWatermark sizeToFit];


    UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc]
                                       initWithTarget:self
                                       action:@selector(labelDragged:)];
    [lblWatermark addGestureRecognizer:gesture];
    [currentImage addSubview:lblWatermark];
}
- (void)labelDragged:(UIPanGestureRecognizer *)gesture
{
    UILabel *label = (UILabel *)gesture.view;
    CGPoint translation = [gesture translationInView:label];

    // move label
    label.center = CGPointMake(label.center.x + translation.x,
                               label.center.y + translation.y);
        [gesture setTranslation:CGPointZero inView:label];
}

提前谢谢你,

【问题讨论】:

  • 您是否尝试过将手势添加到 currentImage 中?即也许 sizeToFit 使 UILabel 太小而无法正常工作。尝试添加到更大的视图...如果这可行,请尝试不使用 sizeToFit。
  • @CSmith 也没有工作。顺便说一句,标签很大。将手势添加到 currentimage 也不会触发事件。

标签: ios cocoa-touch uilabel


【解决方案1】:

发现错误。其实我也得做

userInteractionEnabled = 是

不仅适用于标签,还适用于我添加标签的 Imageview。

【讨论】:

    【解决方案2】:

    确保您的 ViewController 是 UIGestureRecognizer 的委托(.h 文件):

    @interface View : UIView <UIGestureRecognizerDelegate>
    

    然后设置:

     gesture.delegate = self;
    

    【讨论】:

    • UIGestureRecognizerDelegate 包含在 .h 中
    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多