2017-11-11 5 views
0

私はPanTapジェスチャーレコグナイザーで素晴らしい画像を持っています。ピンチジェスチャーは機能しません

私も、ピンチジェスチャーを追加しようとするが、デリゲートも解雇ません。@Leo Dabusへ

func addPinchTo(image:UIImageView) 
    { 
     let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(self.Pscale(gesture:))) 
     let rotationGesture = UIRotationGestureRecognizer(target: self, action: #selector(self.ProtateArt(gesture:))) 
     image.addGestureRecognizer(pinchGesture) 
     image.addGestureRecognizer(rotationGesture) 
     image.isUserInteractionEnabled = true 


    } 


func Pscale(gesture: UIPinchGestureRecognizer) { 

     print("D") //not print 
    } 

    func ProtateArt(gesture: UIRotationGestureRecognizer) { 

     print("aD") //not print 
} 
+0

コードは正常です。このメソッドが呼び出されたクラスが、メソッドの呼び出し後に非初期化されていないかどうかを確認しましたか? – carbonr

答えて

0

コードだけ、でもあなたがMac上でそれを行うカントピンチみましょうトラックパッドで、だけではないMac上で、素晴らしい仕事しましたiPhoneで。

+1

はい。メソッドから何も返す必要はありません。 MacOSではなくUIKit(iOS)でのみ利用可能なUIImageViewとUIPinchGestureRecognizerを使用していることに注意してください。 –

+1

macOSトラックパッドのピンチを監視したい場合、ビューコントローラをオーバーライドする必要があります。magnifyメソッド 'override func magnify(event :NSEvent){ print(文字列(形式: "%.2f %%"、event.magnification)) } '。回転メソッドをオーバーライドする必要がある回転を監視する 'override func rotate(イベント:NSEvent){ print(event.rotation) } –

2
func addPinchTo(image:UIImageView) -> UIImageView 
    { 
     let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(self.Pscale(gesture:))) 
     let rotationGesture = UIRotationGestureRecognizer(target: self, action: #selector(self.ProtateArt(gesture:))) 
     image.addGestureRecognizer(pinchGesture) 
     image.addGestureRecognizer(rotationGesture) 
     image.isUserInteractionEnabled = true 

     return image 
    } 


func Pscale(gesture: UIPinchGestureRecognizer) { 

     print("D") //not print 
    } 

func ProtateArt(gesture: UIRotationGestureRecognizer) { 

     print("aD") //not print 
} 

またはおかげで、@objc方法を使用しても正常に動作します。

@objc func pinch(gesture: UIPinchGestureRecognizer) { 
    print("hit from pinch function") 
} 

@objc func rotation(gesture: UIRotationGestureRecognizer) { 
    print("hit from rotation function") 
} 

とそれを動作させるために、あなたのコードは、それが

幸運を動作するはずです、これを試してみてください。この

func addPinchTo(image: UIImageView) { 
    let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(pinch)) 
    let rotationGesture = UIRotationGestureRecognizer(target: self, action: #selector(rotation)) 
    image.addGestureRecognizer(pinchGesture) 
    image.addGestureRecognizer(rotationGesture) 
    image.isUserInteractionEnabled = true 
} 

ようになるはずです!

+0

これは間違っています。あなたは何も返す必要はありません。 Btw 'inout'キーワードを追加するほうがはるかに簡単ですが、ここでは必要ないことは間違いありません。 –

+0

こんにちはレオ、私はそれを使用して数ヶ月されているとうまく動作し、私のコードを共有して、ps:申し訳ありませんが、私はそれを削除したい場合は、私はやるよ –

+0

これはあなた次第です。私はそれを投票しませんが、他の誰かがそれをするかもしれません。 –

1

ジェスチャーレコグナイザーをイメージビューに追加する方法をおそらく呼び出さなかったことが問題です。 Swift 4でコーディングする場合は、メソッドに@objcを必ず追加してください。ところで、小文字で始まるあなたのメソッドに名前を付けるスウィフト規則です:

@IBOutlet weak var imageView: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    addPinchTo(image: imageView) 
} 

func addPinchTo(image: UIImageView) { 
    let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(pinch)) 
    let rotationGesture = UIRotationGestureRecognizer(target: self, action: #selector(rotation)) 
    image.addGestureRecognizer(pinchGesture) 
    image.addGestureRecognizer(rotationGesture) 
    image.isUserInteractionEnabled = true 
} 

@objc func pinch(gesture: UIPinchGestureRecognizer) { 
    print(#function) 
} 

@objc func rotation(gesture: UIRotationGestureRecognizer) { 
    print(#function) 
} 
関連する問題