iOS5上的手勢有一個很奇怪的問題。我有一個繼承自UIControl的類。我實現了兩個GestureRecognizer:UITapGestureRecognizer和UILongPressGestureRecognizer。這個類的對象應該是可拖動的,但只能在下載之後。當用戶停止保持對象時,它應該回到原來的位置。iOS5上的UIGestureRecognizerDelegate和手勢
雙擊手勢後,對象應該開始下載:
- (void) handleTapGestureRecognizer:(UITapGestureRecognizer*)recognizer
{
[self loadingFiles:recognizer];
}
長按手勢使用拖動對象,但之後下跌目標應該回到它的中心。
所以,我已經實現UIGestureRecognizerDelegate這樣的:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:
(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
[self loadingFiles:gestureRecognizer];
return self.isLoaded;
}
else return YES;
}
在UIGestureRecognizerDelegate協議參考有寫道:「gestureRecognizerShouldBegin」中的iOS 3.2及更高版本,但是當我在Xcode中使用ALT還有另外一個信息它僅在iOS6和更高版本中可用,爲什麼?該方法不在iOS5中調用。 所以在handleLongPressGestureRecognizer的beggining我寫道:
- (void)handleLongPressGestureRecognizer: (UILongPressGestureRecognizer *)recognizer
{
if (!self.isLoaded)
{
[self loadingFiles:recognizer];
return;
}
else
{
(...)
}
}
而且在iOS6的一切工作完全正常,但在iOS5中,當我保存對象,並嘗試將其移動,它不是在下載過程中移動(這很好),但在此之後,它正在改變中心,並凍結在最後一個地方,我保持我的手指。
我將不勝感激任何線索如何解決這個問題。
編輯:ANSWER
好的我找到了一個答案。也許這是不是最好的解決方案,但它工作: 在方法「loadingFiles」這就是所謂的「handleLongPressGestureRecognizer」方法開始我把:
- (BOOL) loadingFiles:(UIGestureRecognizer*)recognizer
{
if (!_isSelectable ||! self.isLoaded)
{
longPressGestureRecognizer.enabled = NO;
(...)
}
}
而當標誌isLoaded是YES有變化:
longPressGestureRecognizer.enabled = YES;
感謝您的回覆。 那麼我應該怎麼做才能調用這個方法呢?現在不叫它。 – malgorzata 2013-05-16 11:48:59
我似乎忘記了情節。 「使這種方法被稱爲」是什麼意思? – matt 2013-05-16 16:49:32