2013-12-23 53 views
0

我試圖模仿鍵盤的長按建議一個字母爲UIButton控制。我試圖做的是長按UIButton,按住按鈕3個新按鈕顯示並選擇這3個新按鈕之一。就像鍵盤信件建議一樣。 enter image description here如何追蹤長按後的按鈕選擇?

我該怎麼做?任何想法? 謝謝

回答

1

UIControl只是爲UILongPressGestureRecognizer ,您可以通過minimumPressDuration財產

如果您想對UIButton這種行爲設置印刷機的時候你要這個手勢識別器添加到按鈕和手柄第一次通話(單擊)。

+0

我已經將UILongPressGestureRecogniser添加到第一個按鈕,但問題是當我將手指移動到第二個按鈕(第一個按鈕仍然長按)時,我沒有看到第二個按鈕被觸摸 – Legnus

1

你擁有一套完整的UIControl(UIButton的是它的子類)的事件來處理,你需要的所有觸摸事件:當你觸摸按鈕

  • UIControlEventTouchDownRepeat

    enum { 
        UIControlEventTouchDown   = 1 << 0, 
        UIControlEventTouchDownRepeat  = 1 << 1, 
        UIControlEventTouchDragInside  = 1 << 2, 
        UIControlEventTouchDragOutside = 1 << 3, 
        UIControlEventTouchDragEnter  = 1 << 4, 
        UIControlEventTouchDragExit  = 1 << 5, 
        UIControlEventTouchUpInside  = 1 << 6, 
        UIControlEventTouchUpOutside  = 1 << 7, 
        UIControlEventTouchCancel   = 1 << 8, 
    
        UIControlEventValueChanged  = 1 << 12, 
    
        UIControlEventEditingDidBegin  = 1 << 16, 
        UIControlEventEditingChanged  = 1 << 17, 
        UIControlEventEditingDidEnd  = 1 << 18, 
        UIControlEventEditingDidEndOnExit = 1 << 19, 
    
        UIControlEventAllTouchEvents  = 0x00000FFF, 
        UIControlEventAllEditingEvents = 0x000F0000, 
        UIControlEventApplicationReserved = 0x0F000000, 
        UIControlEventSystemReserved  = 0xF0000000, 
        UIControlEventAllEvents   = 0xFFFFFFFF 
    }; 
    
    • UIControlEventTouchDown會火如果你繼續按住按鈕會發射(注意這個事件會多次發射,所以你應該只處理第一個) - 在這裏,你應該顯示彈出框
    • UIControlEventTouchDragExit將在你拖動fi時觸發手指出從按鈕 - 在這裏你應該隱藏酥料餅
    • UIControlEventTouchDragEnter將火當你拖動手指到按鈕 - 在這裏,當你從手指擡你應該顯示酥料餅
    • UIControlEventTouchUpInsideUIControlEventTouchUpOutsideUIControlEventTouchCancel必火按鈕 - 在這裏你應該隱藏酥料餅

    UPDATE
    你將有一些邏輯來實現處理拖動手指彈出內(因爲那樣你會從按鈕中拖出)。