我们从这里开始使用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) {}
}
答案 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()函数。让我知道你的情况。
更新:如上所述,您可能点击了以下两条错误消息:
不要那样做。如果确实获得了该文件的全新副本,则只需实施没有任何@objc
的协议方法即可。点击Command + Shift + k
清理构建文件夹,然后重新构建。之后,我没有收到任何错误,运行正常,您也应该如此。
答案 1 :(得分:2)
在实现中,您忘记在_
和view
之间放置空格;
更改
func didFinish(_view : YPDrawSignatureView)
至
func didFinish(_ view : YPDrawSignatureView)