2016-10-19 18 views
1

ボタンがタップされている場所の(x、y)位置を取得しようとしています。私は答えを見つけましたが、Swift 2.3ではうまくいきません。 提案がありますか?UIButtonアクションのタッチ位置

@IBAction func buttonPressed(button: UIButton, forEvent event: UIEvent) { 
    guard let touch = event.allTouches()?.first else { return } 
    let point = touch.locationInView(button) 
    print ("point: \(point)") 
} 

スウィフト3:

@IBAction func buttonTapped(sender: AnyObject, forEvent event: UIEvent) {  
    let buttonView = sender as! UIView;  

    // get any touch on the buttonView 
    if let touch = event.touchesForView(buttonView) as? UITouch{ 
     // print the touch location on the button 
     print(touch.locationInView(buttonView)) 
    } 
} 
+2

任意のコードを動作します既に試したソリューションから – alexburtnik

答えて

1

スウィフト2有用であろう:私が試してみました何

@IBAction func buttonPressed(_ button: UIButton, forEvent event: UIEvent) { 
    guard let touch = event.allTouches?.first else { return } 
    let point = touch.location(in: button) 
    print ("point: \(point)") 
} 
ストーリーボードでは、このポップアップで右のオプションを選ぶイベントでIBActionを作成するには

enter image description here

+0

あなたのお手伝いをしていただきありがとうございます! –

+0

@MarcIbrahimよろしくお願いします。実際にあなたが投稿したコードもうまくいくはずです。 – alexburtnik

-1
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) { 
     let touch = touches.allObjects[0] as UITouch 
     let touchLocation = touch.locationInView(self.view) 

    } 

ホープこれは

+0

あなたの答えをありがとうが、touchesBeganメソッドではなく、UIButtonからのIBActionではありません。 –

0
func addGesture() { 
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.buttonTapped(sender:))); 
gestureRecognizer.numberOfTapsRequired = 1; 
gestureRecognizer.numberOfTouchesRequired = 1; 
button.addGestureRecognizer(gestureRecognizer) } 


func buttonTapped(sender:UIGestureRecognizer) { 
    print(sender.location(in: button)) 

} 

あなたはUIButtonにジェスチャー認識を追加することができますし、それは同様

+0

アレックスの答えが働いています。とにかく、ありがとう! –

関連する問題