非'@objc'方法'didFinish'不满足'@objc'协议'YPSignatureDelegate'的要求

时间:2019-11-22 14:36:47

标签: swift

我们从这里开始使用YPDrawSignature在IOS App上绘制签名。

我们在UIViewController上收到以下错误。

Non-'@objc' method 'didFinish' does not satisfy requirement of '@objc' protocol 'YPSignatureDelegate'

The UIViewController is this.

class SignatureViewController:  UIViewController , UICollectionViewDelegate, UICollectionViewDataSource, YPSignatureDelegate {
    func didStart(_ view : YPDrawSignatureView) {
       // print("Started Drawing")
    }

    func didFinish(_ view : YPDrawSignatureView){
      // func didFinish (){
     }

}

更新。

我们尝试了以下方法。

@objc func didStart(_view : YPDrawSignatureView) {
    // print("Started Drawing")
}

但仍然出现相同的错误。

YPDrawSignatureView具有以下委托

@objc
public protocol YPSignatureDelegate: class {
   func didStart(_ view : YPDrawSignatureView)
   func didFinish(_ view : YPDrawSignatureView)

}


extension YPSignatureDelegate {

   func didStart(_ view : YPDrawSignatureView) {}
   func didFinish(_ view : YPDrawSignatureView) {}

 }

2 个答案:

答案 0 :(得分:2)

我已经下载了YPSignatureView,并且与您的操作类似。我实现的是:

func didStart(_ view : YPDrawSignatureView) {}
func didFinish(_ view : YPDrawSignatureView) {}

以及粗略地将委托分配给视图,以及由委托实现的那些方法。而且我没有任何错误。 通过点击红色Fix作为建议,确保您没有意外更改YPSignatureView.swift文件。在实现didStart和didFinish之前,确实出现了与您相同的错误,并带有一个Fix in YPSignatureView按钮。单击该选项将以无提示方式更改YPSignatureView.swift中的代码。确保YPSignatureView.swift原始并且实现上述两个功能,您应该没问题。为了安全起见,重新下载该文件,实现上述两种方法,就这样。

分别在触摸开始和结束时调用我的didStart()和didFinish()函数。让我知道你的情况。

更新:如上所述,您可能点击了以下两条错误消息:

enter image description here

不要那样做。如果确实获得了该文件的全新副本,则只需实施没有任何@objc的协议方法即可。点击Command + Shift + k清理构建文件夹,然后重新构建。之后,我没有收到任何错误,运行正常,您也应该如此。

答案 1 :(得分:2)

在实现中,您忘记在_view之间放置空格;

更改

func didFinish(_view : YPDrawSignatureView)

func didFinish(_ view : YPDrawSignatureView)