2013-05-13 81 views
0

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; 

回答

0

在UIGestureRecognizerDelegate協議參考有寫道:「gestureRecognizerShouldBegin」中的iOS 3.2及更高版本,但是當我在Xcode中使用ALT還有另一種信息,它僅適用於iOS6的,後來

不,你混淆了兩個不同的東西。

  • 有一個新的iOS 6 UIView方法gestureRecognizerShouldBegin。它優先考慮,並在UIView自己的手勢響應(例如UIButton的可打字性)和更高級別的手勢識別器(附加到超級視圖)之間起中介作用。

  • 有一個手勢識別代表消息gestureRecognizerShouldBegin:一直在那裏。

+0

感謝您的回覆。 那麼我應該怎麼做才能調用這個方法呢?現在不叫它。 – malgorzata 2013-05-16 11:48:59

+0

我似乎忘記了情節。 「使這種方法被稱爲」是什麼意思? – matt 2013-05-16 16:49:32