2015-06-16 10 views
7

button click ve button long click'da iki eylemi tetiklemek istiyorum. Arabirim oluşturucuya UIbutton ekledim. IBAction'u kullanarak iki eylemi nasıl tetikleyebilirim? Birisi bunu nasıl arşivleyeceğimi söyleyebilir mi?Tek dokunuşla ve uzun basma olaylarıyla UIButton hızlıca

bu i düğme için kullandık kodu

@IBAction func buttonPressed (sender: UIButton) { .... }

ben bu yöntemi kullanmak veya i uzun tıklama için başka bir yöntem kullanmak zorunda yapabilirsiniz tıklayın edilir?

+1

Kontrol bu bir http://stackoverflow.com/questions/6660282/uibutton-with-longpress-and-touchup-inside –

cevap

17

siz ve uzun basarak düğme içine bu şekilde hareketlerini ekleyebilir tek bir dokunuşla herhangi bir işlem gerçekleştirmek istiyorsanız: Eğer tek düğme için birden yöntemi ekleyebilir ve sadece Çıkışı ihtiyaç

@IBOutlet weak var btn: UIButton! 

override func viewDidLoad() { 

    let tapGesture = UITapGestureRecognizer(target: self, action: "Tap") //Tap function will call when user tap on button 
    let longGesture = UILongPressGestureRecognizer(target: self, action: "Long") //Long function will call when user long press on button. 
    tapGesture.numberOfTapsRequired = 1 
    btn.addGestureRecognizer(tapGesture) 
    btn.addGestureRecognizer(longGesture) 
} 

func Tap() { 

    println("Tap happend") 
} 

func Long() { 

    println("Long press") 
} 

Bu şekilde Bunun için bu düğme için ..

+0

hepsi aynı şeyi beri benim ui birden düğmeleri Ben bu yöntemi ('@IBAction func buttonPressed (gönderen: UIButton') için bu haritaya var ve ben programlı bir şekilde ekleyebilir miyim? –

+0

Sonra tüm düğme için çıkış oluşturmak ve bu hareketleri ona eklemek gerekir.ve bu yöntem çalışacaktır Tüm tuşlar için –

+0

Ah benim klavye bir 30 düğmeleri var :(çıkış kullanmadan onları arşivlemek için herhangi bir yolu var mı? –

0

Özel bir UIButton sınıfı oluşturmayın, bir protokol oluşturun ve düğmenin bilgileri temsilci'ye geri göndermesine izin verin. Böyle bir şey:

//create your button using a factory (it'll be easier of course) 
    //For example you could have a variable in the custom class to have a unique identifier, or just use the tag property) 

    func createButtonWithInfo(buttonInfo: [String: Any]) -> CustomUIButton { 
     let button = UIButton(type: .custom) 
     button.tapDelegate = self 
     /* 
Add gesture recognizers to the button as well as any other info in the buttonInfo 

*/ 
     return button 
    } 

    func buttonDelegateReceivedTapGestureRecognizerFrom(button: CustomUIButton){ 
     //Whatever you want to do 
    }