UITapGestureRecognizer无法识别的选择器发送到实例

Bad*_*Cat 10 selector ios uitapgesturerecognizer swift

我已经搜索了这个问题的解决方案,但在我的情况下找不到任何似乎可以解决它的问题.我从UITapGestureRecognizer获得了上述异常.

这是简化的代码:

import UIKit;

class ViewController : UIViewController, UIScrollViewDelegate
{
    @IBOutlet weak var scrollView:UIScrollView!;
    var imageView:UIImageView!;

    override func viewDidLoad()
    {
        super.viewDidLoad();

        ... set up imageView/scrollView here ...

        let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "onScrollViewDoubleTapped");
        doubleTapRecognizer.numberOfTapsRequired = 2;
        doubleTapRecognizer.numberOfTouchesRequired = 1;
        scrollView.addGestureRecognizer(doubleTapRecognizer);
    }


    func onScrollViewDoubleTapped(recognizer:UITapGestureRecognizer)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉这段代码有什么问题吗?对我来说似乎都是正确的.我怀疑它与将ViewController指定为scrollView的委托(或反之亦然)有关?但是,ViewController被设置为scrollView的委托.但也许是其他导致这个错误的东西?

Con*_*nor 22

尝试在选择器字符串中添加冒号.

let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "onScrollViewDoubleTapped:");
Run Code Online (Sandbox Code Playgroud)

正如cabellicar123所提到的,这表明选择器采用了参数.

  • 为了进一步解释,`:`表示它期待一个参数. (2认同)

Dan*_*orm 5

Swift 4 使用#selector.

let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didSelectItem(sender:)))

@objc func didSelectItem(sender: AnyObject?) {
    print("didSelectItem: \(sender)")
}
Run Code Online (Sandbox Code Playgroud)