2016-07-18 9 views
4

UITapGestureRecognizerでパラメータを渡す方法はありますか? 私は、これはObjective-Cのために答えを見てきましたが、迅速なUITapGestureRecognizerでパラメータを渡す

test.userInteractionEnabled = true 
let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("imageTapped4:")) 
// Something like text.myParamater 
test.addGestureRecognizer(tapRecognizer) 

のための答えを見つけるそして、(){}

答えて

12

1つのアプローチは、UITapGestureRecognizerをサブクラス化してからプロパティを設定することです。次に例を示します。あなたもあっSO上の例の多くは、ある表情、幸運を持って

class ViewController: UIViewController { 

    @IBOutlet weak var label1: UILabel! 
    @IBOutlet weak var image: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     image.userInteractionEnabled = true; 
     let tappy = MyTapGesture(target: self, action: #selector(self.tapped(_:))) 
     image.addGestureRecognizer(tappy) 
     tappy.title = "val" 
    } 

    func tapped(sender : MyTapGesture) { 
     print(sender.title) 
     label1.text = sender.title 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

class MyTapGesture: UITapGestureRecognizer { 
    var title = String() 
} 

e.t.c、送信者にいくつかのチェックを行うと、いくつかのタグ、クラス、文字列と等しいかどうかを確認できます。

+2

Thanx!それはまさに私が探していたものでした –

-1

imageTapped4 FUNC下、主にタップジェスチャーでメッセージパッシングをmyParameterを受け取ることができませんでした好きなのは、ビューで検出されたタップジェスチャーの位置です。

ビューコントローラのself.viewにタップジェスチャを追加したとします。

override func viewDidLoad() { 
    super.viewDidLoad() 
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.printGesPostion)) 
    self.view.addGestureRecognizer(tapGesture) 
    // Do any additional setup after loading the view, typically from a nib. 
} 

我々はそれがUILabel上で起こっているこの場合

func printGesPostion(ges:UITapGestureRecognizer) { 
    print(ges.locationInView(self.view)) 

    let subView = self.view.hitTest(ges.locationInView(self.view), withEvent: nil) 
    if subView?.isKindOfClass(UILabel) == true { 

     print((subView as! UILabel).text!) 
    } 
} 

ように、方法は、タップジェスチャーの位置を検出しているprintGesPositionメソッドを実装することができ、それはlabel.text

を印刷します

label.userInteraction = trueをViewDidLoadまたは単にストーリーボードに設定することを忘れないでください。

0

最も良い方法は、func imageTapped64が起動されたときにパラメータを決定することです。ビュー(@Developer Sheldonの答えをご覧ください) または他の多くの方法であなたにパラメータを得ることができます。

関連する問題