2013-04-08 75 views
2

我拖動按鈕使用被拖進這些事件:如何更好地拖動UIButton? UIButton的UIControlEventTouchUpInside事件不叫

[button addTarget:self action:@selector(beganDragging:) 
        forControlEvents:UIControlEventTouchDown]; 
[button addTarget:self action:@selector(wasDragged:withEvent:) 
        forControlEvents:UIControlEventTouchDragOutside | UIControlEventTouchDragInside]; 
[button addTarget:self action:@selector(exitDragging:) 
        forControlEvents:UIControlEventTouchUpInside]; 

這是直截了當以上。方法wasDragged將UIButton的中心調整到UITouch位置。但是,有些情況下我最終會掛起按鈕(通常在手指釋放後它會對齊網格),因爲UIControlEventTouchUpInside從不會被調用!

怎麼樣?比方說,我開始拖動一個按鈕,並按住它,我做了一個截圖(Power + Home)。當我釋放按鈕時,沒有任何事件被調用(即UIControlEventTouchUpInside)。因此,我的按鈕被卡住,而不是捕捉到網格,這是在方法exitDragging

任何光如何確保exitDragging總是運行?

回答

1

也許更容易使用的UIView的API與touchesBegantouchesEnded

看來你是無論如何不使用的UIButton功能。我認爲用UIButton的目標機制管理拖拽並不是它的目的。