私が何をしても、私はいつもこのエラーを受け取ります。スイフト3:認識できないセレクタをジェスチャ認識機能のインスタンスに送信
これは私のcellForItemAtIndexPath
関数内である:
cell.postCell.profileImage.userView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "pressedUserImage:"))
とアクションメソッド:
func pressedUserImage(userView: UIImageView) {
print(userView.superview) // error happens here.
さて、もちろん、私のuserViewは深いビューの階層内にあるが、それはまだ動作しています。何らかの理由でそれはしません。私がuserImage.superview?.superview
などをしても、私はまだエラーが発生します。 代わりに#selector(pressedUserImage(_:)
を使ってみましたが、運はありませんでした。試しましたSelector("pressedUserImage:")
。何もない。
ここで私は間違っていますか?
アップデートは、ここにcellForItemAtIndexPath
機能です:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellID", for: indexPath) as! Posts
cell.postCell.profileImage.userView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "pressedUserImage:"))
cell.postCell.buttonView.sharePost.addTarget(self, action: #selector(pressedShareButton), for: .touchUpInside)
return cell
}
postCell
UIView
です。ここで
は誤りです:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[project.Posts pressedUserImage]: unrecognized selector sent to instance 0x7a9a65e0'
あなたは 'cellForItemAtIndexPath'機能を共有することができます:あなたのクラスは、Objective-Cのクラスではない場合は、彼の変化に加えて
は、あなたはまた、Objective-Cのよう機能にフラグを付けなければなりませんか? – ystack
正確な例外メッセージのテキストも表示できます – Paulw11
ジェスチャ認識プログラムハンドラのパラメータは、ジェスチャ認識プログラムです。タッチされたビューはありません。送信ビューを取得するには、送信者の.viewを使用します。 – vacawama