以编程方式添加gesturerecongnizer

时间:2012-02-19 19:04:40

标签: iphone objective-c ios xcode

我知道如何通过IB添加手势识别器,但我试图通过使用IB来解决这个问题。

所以基本上现在的是

blue1.userInteractionEnabled = YES;
UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc] 
                               initWithTarget:self action:@selector(handlePan:)];

[blue1 addGestureRecognizer:pgr];
[pgr release];

我的handlePan是

-(IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {

    CGPoint translation = [recognizer translationInView:self.view];

    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);

    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];

}

如果我通过IB进行此操作可以正常工作,我可以拍摄这张照片。

我不明白是什么导致它不像现在编码那样移动。

感谢任何帮助。

我也尝试过 - (void)而不是 - (IBAction)在我的handlePan中但是也没用。

2 个答案:

答案 0 :(得分:6)

这在IB中有效但在代码中无效的事实表明错误在第一个代码块中。我怀疑blue1nil。确保在viewDidLoad之前不要尝试修改视图。它们都在nilinitWithFrame:awakeFromNib

答案 1 :(得分:0)

override func viewDidLoad() {
    let tap = UITapGestureRecognizer(target: self, action: #selector(imageTapped(_:)))

    myImage.isUserInteractionEnabled = true
    myImage.addGestureRecognizer(tap)
}

@objc func imageTapped(_ sender: UITapGestureRecognizer) {
    print(#function)
}