[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:
nitrag
2017-01-23 16:17:15 -05:00
committed by Minh Nguyễn
parent 714127eb50
commit 0c95fcfd06
2 changed files with 29 additions and 0 deletions

View File

@@ -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

View File

@@ -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.
*/