2013-05-21 26 views
0

我想設置一個按鈕使用UIControlEventTouchDragEnter作爲觸發按鈕的方法的方式。具體來說,我有一個按鈕,並且如果用戶在按鈕外按下他們的手指,並且將他們的手指拖到按鈕的邊界,我希望按鈕的方法被觸發。使用UIControlEventTouchDragEnter觸發按鈕的方法...但不起作用?

根據apple,此事件UIControlEventTouchDragEnter爲:手指被拖入控件邊界的事件。

但是,我無法獲得觸發按鈕。這裏是我的代碼:

- (IBAction)touchDragEnter:(UIButton *)sender { 
    _samlpe.image = [UIImage imageNamed:@"alternate_pic.png"]; 
} 

所以,touchInto這個按鈕被觸發時,該方法將_Sample當前圖像切換到該備用圖像。如果我只是使用touchUpInside,圖像確實會更改爲點擊按鈕時的替代方式。

有誰知道爲什麼這不起作用,或有解決方法嗎?謝謝!

回答

4

touchDragEnter只有當您最初點擊按鈕,將您的手指拖動到按鈕邊界的外部並再次拖動到按鈕的邊界時纔會觸發。

你可能想利用touchesMoved方法在您的視圖控制器類和檢測基於觸摸的位置輸入的按鍵:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch * touch = [[event allTouches] anyObject]; 
    CGPoint touchLocation = [touch locationInView:touch.view]; 
    NSLog(@"%f - %f", touchLocation.x, touchLocation.y); 
} 
+0

那太好了,感謝偉大的答案。我還在你的方法中加入了一個if語句來檢測觸摸是否發生在屏幕的某個區域內。在該區域發現觸摸後,我想要播放1秒的音頻剪輯。但是,如果您拖動手指,它會持續驗證if語句,並且每次像素移動後聲音都會重新開始。有沒有辦法啓動聲音,讓它完成而無需再次啓動? – jake9115

+0

@ jake9115:我建議你打開一個新的聲音完整的聲音和if語句的代碼:) –

+0

沒問題,再次感謝! – jake9115