簡體   English   中英

iOS:是否可以在MKMapView中添加三擊手勢識別器?

[英]iOS: Is it possible to add a triple tap gesture recognizer to a MKMapView?

我有一個MKMapView ,雙擊時放大(默認行為)。 我想在地圖視圖中添加三擊手勢識別器,再次縮小到某個初始縮放級別。
問題是內置雙擊識別器首先觸發。 為了延遲這一點,必須以某種方式訪問​​雙擊識別器,但至少在iOS6中, view屬性gestureRecognizers不包含地圖視圖的雙擊識別器。
那么,是否可以以某種方式延遲雙擊識別器以便允許三抽頭識別器首先觸發?

UIGestureRecognizer類中查看實例方法requireGestureRecognizerToFail

http://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/instm/UIGestureRecognizer/requireGestureRecognizerToFail

在接收器和另一個手勢識別器之間創建依賴關系。

例如:

[doubleTap requireGestureRecognizerToFail:tripleTap];

更新

經過一段時間的閑逛后,我得到了這樣的工作(假設你有一個名為mapViewMKMapView ):

UITapGestureRecognizer *tripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTripleTap:)];
tripleTap.numberOfTapsRequired = 3;
[mapView.subviews[0] addGestureRecognizer:tripleTap];

UIView *tempMapView = mapView.subviews[0];
NSArray *mapGestures = tempMapView.gestureRecognizers;
UITapGestureRecognizer *tempMapDoubleTap = mapGestures[0];
[tempMapDoubleTap requireGestureRecognizerToFail:tripleTap];
NSLog(@"%@", mapGestures);

三重水龍頭選擇器:

- (void)handleTripleTap:(UIGestureRecognizer *)gestureRecognizer {
    NSLog(@"Triple Tap Detected..");
}

現在雙擊仍然可以縮放MKMapView並且三次handleTripleTap成功執行handleTripleTap而不進行縮放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM