2011-07-08 67 views
2

這裏是問題: 我想在我的應用程序中使用UIGestureRecognizer。 由於這個原因,我想從我的意見中拋棄TouchBegan/TouchEnded事件。如何用UIGestureRecognizer替換TouchesBegan

但是,我不明白如何使用UIGestureRecognizers在觸摸開始時(用戶將其手指放在屏幕上)進行管理。

最簡單的一個是UITapGestureRecognizer,但只有在TapGesture完成時關聯的選擇器纔會被觸發(呃......它完全可以理解)。但問題仍然存在:我如何停止使用touchesBegan並從UIGestureRecognizer中獲取該事件?

謝謝!

回答

1

對於你是什麼嘗試,你不能。手勢識別器用於高級手勢,因此它們在所有應用程序中的行爲都相同(認爲划動,雙擊所需的時間等)。對於低級別控制和做的事情,識別器不能你仍然要實施的touchesBegan,touchesEnded等

+0

這個響應是完全錯誤的,請用下面的UIGestureRecognizerStateBegan檢查響應。 – floydaddict

4

這裏的邏輯是一個例子:

//Pan gesture 
recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; 
((UIPanGestureRecognizer *)recognizer).minimumNumberOfTouches = 3; //number of fingers 
recognizer.delegate = self; 
[self.view addGestureRecognizer:recognizer]; 

[recognizer release]; 

- (void)handlePan:(UIPanGestureRecognizer *)recognizer 
{ 
    if (recognizer.state == UIGestureRecognizerStateBegan) 
    { 
    //do something 
    } else if (recognizer.state == UIGestureRecognizerStateEnded) 
    { 
    //do something 
    } 
} 

而且在.H實施UIGestureRecognizerDelegate文件。可能是你需要做self.view.userInteractionEnabled = YES取決於你使用的視圖。例如,如果它是UIImageView,則需要設置userInteractionEnabled = YES,默認爲NO

0

爲什麼不實施自己的touchesBegin在UIGestureRecognizer子類中 - 截取消息,提取所需的信息,然後傳遞消息沿着超級的touchesBegan?