![](/img/trans.png)
[英]Can't add Tap Gesture Recognizer to SwiftUI MKMapView UIViewRepresentable
[英]iOS: Is it possible to add a triple tap gesture recognizer to a MKMapView?
我有一個MKMapView
,雙擊時放大(默認行為)。 我想在地圖視圖中添加三擊手勢識別器,再次縮小到某個初始縮放級別。
問題是內置雙擊識別器首先觸發。 為了延遲這一點,必須以某種方式訪問雙擊識別器,但至少在iOS6中, view
屬性gestureRecognizers
不包含地圖視圖的雙擊識別器。
那么,是否可以以某種方式延遲雙擊識別器以便允許三抽頭識別器首先觸發?
在UIGestureRecognizer
類中查看實例方法requireGestureRecognizerToFail
。
在接收器和另一個手勢識別器之間創建依賴關系。
例如:
[doubleTap requireGestureRecognizerToFail:tripleTap];
經過一段時間的閑逛后,我得到了這樣的工作(假設你有一個名為mapView
的MKMapView
):
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.