Im被UIGestureRecognizerDelegate協議中的方法略微混淆。當我實現下面的委託方法時,我似乎永遠不會讓我的UITapGestureRecognizers發送到此方法,其狀態爲UIGestureRecognizerStateRecognized
。他們總是在UIGestureRecognizerStatePossible
狀態。這是正確的嗎?UIGestureRecognizerDelegate從來沒有顯示水龍頭,因爲在'認可'狀態
下面是測試代碼,我設置用我輕敲手勢和我的測試實現的委託方法:
UITapGestureRecognizer *singelTap = [[UITapGestureRecognizer alloc] initWithTarget:nil action:nil];
singelTap.numberOfTapsRequired = 1;
singelTap.delegate = self;
[self.view addGestureRecognizer:singelTap];
。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
int i = 0;
if(gestureRecognizer.state == UIGestureRecognizerStateBegan){
i=1;
}
if(gestureRecognizer.state == ..... //testing for all possible states...
return YES;
}
是的,我知道。但我的理解是,手勢在每個狀態變化時都被髮送到委託方法。那麼情況並非如此? – 2012-02-07 23:32:27
不需要。如果您只是要求識別一次敲擊,則不需要在「UIGestureRecognizerStatePossible」以外的任何其他狀態中調用委託方法。請解釋你認爲應該調用的委託方法,以及爲什麼。 – mvds 2012-02-07 23:36:44
我需要決定是否要對基於UITouch的TapGesture做出反應,即如果它是在特定的子視圖上,則允許該手勢,否則不允許。問題在於,在識別出其他幾個水龍頭和手勢的情況下,我只希望一旦識別出該手勢。如果我使用'handlesTap'方法,我將失去UITouch中包含的信息。 – 2012-02-07 23:43:49