2015-06-16 25 views
7

Tôi muốn kích hoạt hai hành động trên button clickbutton long click. Tôi đã thêm một UIbutton trong trình tạo giao diện của mình. Làm thế nào tôi có thể kích hoạt hai hành động bằng cách sử dụng IBAction ai đó có thể cho tôi biết làm thế nào để lưu trữ này?UIButton với báo chí đơn và sự kiện báo chí nhanh chóng nhanh chóng

này được mã tôi đã sử dụng cho một nút bấm

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

tôi có thể sử dụng phương pháp này hay để tôi phải sử dụng một phương pháp khác để nhấp chuột lâu?

+1

Kiểm tra này một http://stackoverflow.com/questions/6660282/uibutton-with-longpress-and-touchup-inside –

Trả lời

17

Nếu bạn muốn thực hiện bất kỳ hành động với vòi duy nhất bạn và nhấn lâu bạn có thể thêm những cử chỉ nút vào theo cách này:

@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") 
} 

Bằng cách này bạn có thể thêm nhiều phương pháp để nút duy nhất và bạn chỉ cần Outlet cho nút đó cho điều đó ..

+0

tôi có nhiều nút trong ui của tôi kể từ khi tất cả họ đều làm tương tự này tôi có bản đồ chúng vào phương pháp này ('@IBAction func buttonPressed (người gửi: UIButton') và tôi có thể thêm phương pháp lập trình không? –

+0

Sau đó, bạn cần phải tạo ra ổ cắm cho tất cả các nút và thêm cử chỉ này vào it.and phương pháp này sẽ làm việc cho tất cả các nút –

+0

oh tôi có 30 nút trong ui của nó là một bàn phím: (có cách nào để lưu trữ chúng mà không cần sử dụng ổ cắm không?) –

0

Tại sao không tạo lớp UIButton tùy chỉnh, hãy tạo giao thức và để nút gửi lại thông tin cho đại biểu. Một cái gì đó như thế này:

//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 
    } 
Các vấn đề liên quan