@@ -16,14 +16,20 @@ class UIGestureRecognizerImpl extends NSObject {
1616 private _owner : GesturesObserver ;
1717 private _type : any ;
1818 private _callback : Function ;
19+ private _context : any ;
1920
20- public initWithOwnerTypeCallback ( owner : GesturesObserver , type : any , callback ?: Function ) : UIGestureRecognizerImpl {
21+ public initWithOwnerTypeCallback ( owner : GesturesObserver , type : any , callback ?: Function , thisArg ?: any ) : UIGestureRecognizerImpl {
2122 this . _owner = owner ;
2223 this . _type = type ;
24+
2325 if ( callback ) {
2426 this . _callback = callback ;
2527 }
2628
29+ if ( thisArg ) {
30+ this . _context = thisArg ;
31+ }
32+
2733 return this ;
2834 }
2935
@@ -44,7 +50,7 @@ class UIGestureRecognizerImpl extends NSObject {
4450 } ;
4551
4652 if ( callback ) {
47- callback ( args ) ;
53+ callback . call ( this . _context , args ) ;
4854 }
4955 }
5056}
@@ -53,6 +59,7 @@ export class GesturesObserver implements definition.GesturesObserver {
5359 public _callback : ( args : definition . GestureEventData ) => void ;
5460 public _target : view . View ;
5561 private _recognizers : { } ;
62+ private _context : any ;
5663
5764 private _onTargetLoaded : ( data : observable . EventData ) => void ;
5865 private _onTargetUnloaded : ( data : observable . EventData ) => void ;
@@ -62,9 +69,10 @@ export class GesturesObserver implements definition.GesturesObserver {
6269 this . _recognizers = { } ;
6370 }
6471
65- public observe ( target : view . View , type : definition . GestureTypes ) {
72+ public observe ( target : view . View , type : definition . GestureTypes , thisArg ?: any ) {
6673 if ( target ) {
6774 this . _target = target ;
75+ this . _context = thisArg ;
6876 this . _onTargetLoaded = args => {
6977 trace . write ( this . _target + ".target loaded. _nativeView:" + this . _target . _nativeView , "gestures" ) ;
7078 this . _attach ( target , type ) ;
@@ -84,7 +92,7 @@ export class GesturesObserver implements definition.GesturesObserver {
8492
8593 }
8694
87- private _attach ( target : view . View , type : definition . GestureTypes ) {
95+ private _attach ( target : view . View , type : definition . GestureTypes ) {
8896 trace . write ( target + "._attach() _nativeView:" + target . _nativeView , "gestures" ) ;
8997 this . _dettach ( ) ;
9098
@@ -175,14 +183,14 @@ export class GesturesObserver implements definition.GesturesObserver {
175183
176184 private _executeCallback ( args : definition . GestureEventData ) {
177185 if ( this . _callback ) {
178- this . _callback ( args ) ;
186+ this . _callback . call ( this . _context , args ) ;
179187 }
180188 }
181189
182190 private _createRecognizer ( type : definition . GestureTypes , callback ?: ( args : definition . GestureEventData ) => void , swipeDirection ?: UISwipeGestureRecognizerDirection ) : UIGestureRecognizer {
183191 var recognizer : UIGestureRecognizer ;
184192 var name = definition . toString ( type ) ;
185- var target = _createUIGestureRecognizerTarget ( this , type , callback ) ;
193+ var target = _createUIGestureRecognizerTarget ( this , type , callback , this . _context ) ;
186194 var recognizerType = _getUIGestureRecognizerType ( type ) ;
187195
188196 if ( recognizerType ) {
@@ -194,7 +202,7 @@ export class GesturesObserver implements definition.GesturesObserver {
194202 else {
195203 recognizer = recognizerType . alloc ( ) . initWithTargetAction ( target , "recognize" ) ;
196204 }
197-
205+
198206 if ( recognizer ) {
199207 this . _recognizers [ name ] = < RecognizerCache > { recognizer : recognizer , target : target } ;
200208 }
@@ -204,8 +212,8 @@ export class GesturesObserver implements definition.GesturesObserver {
204212 }
205213}
206214
207- function _createUIGestureRecognizerTarget ( owner : GesturesObserver , type : definition . GestureTypes , callback ?: ( args : definition . GestureEventData ) => void ) : any {
208- return UIGestureRecognizerImpl . new ( ) . initWithOwnerTypeCallback ( owner , type , callback ) ;
215+ function _createUIGestureRecognizerTarget ( owner : GesturesObserver , type : definition . GestureTypes , callback ?: ( args : definition . GestureEventData ) => void , thisArg ?: any ) : any {
216+ return UIGestureRecognizerImpl . new ( ) . initWithOwnerTypeCallback ( owner , type , callback , thisArg ) ;
209217}
210218
211219interface RecognizerCache {
0 commit comments