

swiftで UILongPressGestureRecognizerの簡単なテストをしてみました。  
objective-cではうまく長押しを検出してくれたのですが、  
swiftでは、firstLの長押しを検出しませんでした。

このコードのどこに問題があるのでしょうか？

[code]

    class ViewController: UIViewController {
    
        @IBOutlet weak var firstL: UIButton!
        @IBOutlet weak var secondL: UIButton!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
           let gest = UILongPressGestureRecognizer(target: self, action: "press:")
    
    
            gest.minimumPressDuration = 0.5
    
            firstL.addGestureRecognizer(gest)
    
            secondL.addGestureRecognizer(gest)
    
        }
    
        func press(sender : UILongPressGestureRecognizer){
            if let bb = sender.view as? UIButton {
             　　println "yes"
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2015-03-04T03:21:53.560
7408
2015-03-04T04:50:40.297
2015-03-04T04:50:40.297
7362
4646
question
swift
SwiftでUILongPressGestureRecognizerの設定方法が変わったのか？


同じ内容のプログラムを、Objective-Cで書いても、やはり「firstL」ボタンは、ロングプレスに反応しません。  
理由は、
**ひとつのUIGestureRecognizer（サブクラス）のインスタンスは、ひとつのUIView（サブクラス）のインスタンスにしか登録できない**
からだと考えられます。

[code]

    firstL.addGestureRecognizer(gest)
    
    secondL.addGestureRecognizer(gest)
    
[/code]

このように連続して登録すると、先に登録したほうがキャンセルされてしまうんでしょう。

[code]

    firstL.addGestureRecognizer(gest)
    
    // secondL.addGestureRecognizer(gest)
    
[/code]

secondLのほうの登録を削除すると、firstLは、ロングプレスに反応します。  
この点は、Objective-Cで書いても、まったく同じ結果になります。


CC BY-SA 3.0
2015-03-04T04:23:23.280
7412
2015-03-04T04:23:23.280
7362
7408
answer