Swift 非'@objc';方法';didfish';不符合'的要求@objc';协议';YSignatureedLegate';
我们在这里使用YPDrawSignature在IOS应用程序上绘制签名 我们在UIViewController上遇到以下错误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
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不支持默认实现。