[ios, macos] Document how to avoid gesture recognizer conflicts (#7816)
* Expand on Gesture Implementation Adding Gesture info as discussed: https://github.com/mapbox/mapbox-gl-native/issues/2278#issuecomment-273685832 Not sure if using codeblocks is kosher. * Update styling and verbiage * More updates * [ios] -requireGestureRecognizerToFail: seems to be enough * [macos] Added corresponding macOS documentation
This commit is contained in:
@@ -73,8 +73,22 @@ typedef NS_ENUM(NSUInteger, MGLAnnotationVerticalAlignment) {
|
||||
your Mapbox account. They also deter other developers from using your styles
|
||||
without your permission.
|
||||
|
||||
Adding your own gesture recognizer to `MGLMapView` will block the corresponding
|
||||
gesture recognizer built into `MGLMapView`. To avoid conflicts, define which
|
||||
gesture takes precedence. For example, you can create your own
|
||||
`UITapGestureRecognizer` that will be invoked only if the default `MGLMapView`
|
||||
tap gesture fails:
|
||||
|
||||
```swift
|
||||
let mapTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(myCustomFunction))
|
||||
for recognizer in mapView.gestureRecognizers! where recognizer is UITapGestureRecognizer {
|
||||
mapTapGestureRecognizer.require(toFail: recognizer)
|
||||
}
|
||||
```
|
||||
|
||||
@note You are responsible for getting permission to use the map data and for
|
||||
ensuring that your use adheres to the relevant terms of use.
|
||||
|
||||
*/
|
||||
IB_DESIGNABLE
|
||||
@interface MGLMapView : UIView
|
||||
|
||||
@@ -44,6 +44,21 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
your Mapbox account. They also deter other developers from using your styles
|
||||
without your permission.
|
||||
|
||||
Adding your own gesture recognizer to `MGLMapView` will block the corresponding
|
||||
gesture recognizer built into `MGLMapView`. To avoid conflicts, define which
|
||||
gesture recognizer takes precedence. For example, you can subclass
|
||||
`NSClickGestureRecognizer` and override `-[NSGestureRecognizer shouldRequireFailureOfGestureRecognizer:]`,
|
||||
so that your subclass will be invoked only if the default `MGLMapView` click
|
||||
gesture recognizer fails:
|
||||
|
||||
```swift
|
||||
class MapClickGestureRecognizer: NSClickGestureRecognizer {
|
||||
override func shouldRequireFailure(of otherGestureRecognizer: NSGestureRecognizer) -> Bool {
|
||||
return otherGestureRecognizer is NSClickGestureRecognizer
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@note You are responsible for getting permission to use the map data and for
|
||||
ensuring that your use adheres to the relevant terms of use.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user