Swift 非'@objc';方法';didfish';不符合'的要求@objc';协议';YSignatureedLegate';

Swift 非'@objc';方法';didfish';不符合'的要求@objc';协议';YSignatureedLegate';,swift,Swift,我们在这里使用YPDrawSignature在IOS应用程序上绘制签名 我们在UIViewController上遇到以下错误 Non-'@objc' method 'didFinish' does not satisfy requirement of '@objc' protocol 'YPSignatureDelegate' The UIViewController is this. class SignatureViewController: UIViewController , UI

我们在这里使用YPDrawSignature在IOS应用程序上绘制签名

我们在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) {}

 }

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

func didStart(_ view : YPDrawSignatureView) {}
func didFinish(_ view : YPDrawSignatureView) {}
以及粗略地将委托分配给视图,这些方法由委托实现。我没有发现任何错误通过单击红色按钮,确保您没有意外更改YPSignatureView.swift文件,该按钮显示为
Fix
,作为建议
。在我实现didStart和didfish之前,我确实遇到了与您相同的错误,在YPSignatureView中有一个按钮显示
Fix
。单击该按钮将悄悄更改YPSignatureView.swift中的代码。确保YPSignatureView.swift是原始的,并且实现了上述两个功能,您应该会很好。为了安全起见,重新下载文件,实现上述两种方法,就是这样

我的didStart()和didfish()函数分别在触摸开始和结束时调用。让我知道你怎么样了

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


不要那样做。如果您获得了该文件的新副本,那么只需实现协议方法,而不需要任何
@objc
。点击
Command+Shift+k
清除生成文件夹,然后再次生成。在那之后,我没有收到任何错误,运行正常,您的也应该如此。

在您的实现中,您忘了在
\uu
视图
之间放置空格

改变

func-didfish(\u-view:YPDrawSignatureView)
to


func-didfish(u-view:YPDrawSignatureView)

只需将
@objc
添加到
功能主义者didfish
内部
SignatureViewController
我们就尝试过了。但仍然会得到同样的错误。删除空白协议实现。Objective不支持这一点。@WarrenBurton你能详细说明一下吗?我不明白你的意思。
扩展名中的代码是签名。评论一下。目标C不支持默认实现。