Swift 2.2 - ViewController类型的值没有成员操作

时间:2016-07-06 19:49:01

标签: ios swift

我一直在收到错误"类型' ViewController'没有会员'行动'"

(行动是功能)

以下是我用于该功能和Gesture Recogniser的代码

   let uilpgr = UILongPressGestureRecognizer(target: self, action: #selector(self.action))

    uilpgr.minimumPressDuration = 2

    Map.addGestureRecognizer(uilpgr)

    func action(gestureRecogniser: UIGestureRecognizer) {

        print("Gesture Recognised")


    }

let uilpgr = UILongPressGestureRecognizer(target: self, action: #selector(self.action))

这是self.action

发生错误的地方

我做错了什么以及如何解决?

3 个答案:

答案 0 :(得分:2)

接受Blake Lockley的回答是正确的,在Swift 4之前;但是在Swift 4中,代码需要更改为以下内容才能正确编译(将@objc标记添加到目标函数):

override func viewDidLoad() {

  super.viewDidLoad()

  let uilpgr = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.action))
}

@objc func action(gesture:UIGestureRecognizer){

  print("receives gesture")

}

答案 1 :(得分:1)

您的方法action在创建手势识别器的同一方法中在本地声明。

要解决此问题,请将action方法移到当前所使用的方法之外。这就是它自己的类ViewController的方法,而不是任何其他函数。

答案 2 :(得分:1)

这适用于Xcode 8:

override func viewDidLoad() {

  super.viewDidLoad()

  let uilpgr = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.action))
}

func action(gesture:UIGestureRecognizer){

  print("receives gesture")

}