2016-08-18 15 views
-1

私は描画アプリを持っています。私のVCの中には5色のimageViewが5つあります。 imageViewをクリックしてストロークの色を変更できるようにしたい。それぞれのUIImageViewにジェスチャー認識子を追加し、個々の「セレクタ」機能を持たせることで、ViewControllerで自分自身を繰り返せば簡単に行うことができます。このようなしかし、私はこれらのボタンにクラスを割り当てるときに、彼らは自動的に取得するように、これらのImageViewsのためのカスタムクラス(ColorImageView.Swift)を作成することにより、コードをより明確にすることができるようにしたいtapGestureを使用したカスタムUIView

func redTapped() {} 
func blueTapped() {} 

としてどちらがタップされたかに関する情報をVCが自動的に受け取ります。現時点では、自分のクラスに割り当てられている各画像に対して「imagePressed」をプリントアウトすることができます。しかし、私はどちらが押されたのかを区別する方法がありません。以下は、等...

editVC

+0

あなたのViewControllerは、私はあなたが私はまだ私のVCのために任意のコードを持っていけないのViewController – user3182143

+0

にColorImageViewを追加した意味のコードを示してください。最初に、どのimageViewがカスタムクラスからタップされたのかを区別できるようにしたい。いったん完成したら、私のVCに情報を渡すためにプロトコルを使うことができます。現時点では、imageViewを押したときに次のようにプリントアウトできます..... 画像が押されました。; target = <(action = imagePressed :, target = )>> – user172902

+0

イメージはどこで設定しましたか? – user3182143

答えて

1

することができます

おかげColorImageView.Swift

import Foundation 

class ColorImageView: UIImageView { 

    private func initialize() { 
     let touchGesture = UITapGestureRecognizer(target: self, action: #selector(ColorImageView.imagePressed(_:))) 
     touchGesture.numberOfTapsRequired = 1 
     self.userInteractionEnabled = true 
     self.addGestureRecognizer(touchGesture) 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     initialize() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     initialize() 
    } 

    func imagePressed(gestureRecognizer: UITapGestureRecognizer) { 
     print("image pressed \(gestureRecognizer)") 
    } 
} 

マイImageViewの名はblue.png、green.png、red.pngされているために私のコードですタグを簡単に取得します。正常に動作します。

func imagePressed(gestureRecognizer: UITapGestureRecognizer) 
{ 
    print("image pressed \(gestureRecognizer)") 
    let tappedImageVIew = gestureRecognizer.view as! UIImageView 
    print("image pressed \(tappedImageVIew.tag)") 
} 
+0

魅力的な作品です!非常に感謝 – user172902

+0

おかげで兄弟 – user3182143

+0

あなたは歓迎です:-) – user3182143

関連する問題