Skip to content

Commit

Permalink
fix(ios): gesture handling resilience when views are destroyed quickly (
Browse files Browse the repository at this point in the history
#8645)

closes #8641
  • Loading branch information
NathanWalker committed Jun 16, 2020
1 parent 5cacc25 commit 9afa15f
Showing 1 changed file with 30 additions and 10 deletions.
40 changes: 30 additions & 10 deletions nativescript-core/ui/gestures/gestures.ios.ts
Expand Up @@ -128,55 +128,75 @@ export class GesturesObserver extends GesturesObserverBase {

if (type & GestureTypes.tap) {
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.tap, args => {
this._executeCallback(_getTapData(args));
if (args.view) {
this._executeCallback(_getTapData(args));
}
}));
}

if (type & GestureTypes.doubleTap) {
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.doubleTap, args => {
this._executeCallback(_getTapData(args));
if (args.view) {
this._executeCallback(_getTapData(args));
}
}));
}

if (type & GestureTypes.pinch) {
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.pinch, args => {
this._executeCallback(_getPinchData(args));
if (args.view) {
this._executeCallback(_getPinchData(args));
}
}));
}

if (type & GestureTypes.pan) {
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.pan, args => {
this._executeCallback(_getPanData(args, target.nativeViewProtected));
if (args.view) {
this._executeCallback(_getPanData(args, target.nativeViewProtected));
}
}));
}

if (type & GestureTypes.swipe) {
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.swipe, args => {
this._executeCallback(_getSwipeData(args));
if (args.view) {
this._executeCallback(_getSwipeData(args));
}
}, UISwipeGestureRecognizerDirection.Down));

nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.swipe, args => {
this._executeCallback(_getSwipeData(args));
if (args.view) {
this._executeCallback(_getSwipeData(args));
}
}, UISwipeGestureRecognizerDirection.Left));

nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.swipe, args => {
this._executeCallback(_getSwipeData(args));
if (args.view) {
this._executeCallback(_getSwipeData(args));
}
}, UISwipeGestureRecognizerDirection.Right));

nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.swipe, args => {
this._executeCallback(_getSwipeData(args));
if (args.view) {
this._executeCallback(_getSwipeData(args));
}
}, UISwipeGestureRecognizerDirection.Up));
}

if (type & GestureTypes.rotation) {
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.rotation, args => {
this._executeCallback(_getRotationData(args));
if (args.view) {
this._executeCallback(_getRotationData(args));
}
}));
}

if (type & GestureTypes.longPress) {
nativeView.addGestureRecognizer(this._createRecognizer(GestureTypes.longPress, args => {
this._executeCallback(_getLongPressData(args));
if (args.view) {
this._executeCallback(_getLongPressData(args));
}
}));
}

Expand Down

0 comments on commit 9afa15f

Please sign in to comment.