@@ -24,6 +24,7 @@ export class GesturesObserver implements definition.GesturesObserver {
2424
2525 private _onTargetLoaded : ( data : observable . EventData ) => void ;
2626 private _onTargetUnloaded : ( data : observable . EventData ) => void ;
27+ public type : definition . GestureTypes ;
2728
2829 constructor ( callback : ( args : definition . GestureEventData ) => void ) {
2930 this . _callback = callback ;
@@ -35,6 +36,7 @@ export class GesturesObserver implements definition.GesturesObserver {
3536
3637 public observe ( target : view . View , type : definition . GestureTypes , thisArg ?: any ) {
3738 if ( target ) {
39+ this . type = type ;
3840 this . _target = target ;
3941 this . _context = thisArg ;
4042 this . _onTargetLoaded = args => {
@@ -70,9 +72,6 @@ export class GesturesObserver implements definition.GesturesObserver {
7072
7173 private _dettach ( ) {
7274 trace . write ( this . _target + "._detach() android:" + this . _target . android , "gestures" ) ;
73- if ( this . _target && this . _target . android ) {
74- this . _target . android . setOnTouchListener ( null ) ;
75- }
7675
7776 this . _onTouchListener = null ;
7877 this . _simpleGestureDetector = null ;
@@ -86,7 +85,7 @@ export class GesturesObserver implements definition.GesturesObserver {
8685 this . _dettach ( ) ;
8786
8887 if ( type & definition . GestureTypes . tap || type & definition . GestureTypes . doubleTap || type & definition . GestureTypes . longPress ) {
89- this . _simpleGestureDetector = new android . support . v4 . view . GestureDetectorCompat ( target . _context , new TapAndDoubleTapGestureListener ( this , this . _target ) ) ;
88+ this . _simpleGestureDetector = new android . support . v4 . view . GestureDetectorCompat ( target . _context , new TapAndDoubleTapGestureListener ( this , this . _target , type ) ) ;
9089 }
9190
9291 if ( type & definition . GestureTypes . pinch ) {
@@ -100,58 +99,6 @@ export class GesturesObserver implements definition.GesturesObserver {
10099 if ( type & definition . GestureTypes . pan ) {
101100 this . _panGestureDetector = new android . support . v4 . view . GestureDetectorCompat ( target . _context , new PanGestureListener ( this , this . _target ) ) ;
102101 }
103-
104- var that = new WeakRef ( this ) ;
105-
106- this . _onTouchListener = new android . view . View . OnTouchListener ( {
107- onTouch : function ( view : android . view . View , motionEvent : android . view . MotionEvent ) {
108- var owner = that . get ( ) ;
109- if ( ! owner ) {
110- return false ;
111- }
112-
113- if ( owner . _simpleGestureDetector ) {
114- owner . _simpleGestureDetector . onTouchEvent ( motionEvent ) ;
115- }
116-
117- if ( owner . _scaleGestureDetector ) {
118- owner . _scaleGestureDetector . onTouchEvent ( motionEvent ) ;
119- }
120-
121- if ( owner . _swipeGestureDetector ) {
122- owner . _swipeGestureDetector . onTouchEvent ( motionEvent ) ;
123- }
124-
125- if ( owner . _panGestureDetector ) {
126- owner . _panGestureDetector . onTouchEvent ( motionEvent ) ;
127- }
128-
129- if ( type & definition . GestureTypes . rotation && motionEvent . getPointerCount ( ) === 2 ) {
130-
131- var deltaX = motionEvent . getX ( 0 ) - motionEvent . getX ( 1 ) ;
132- var deltaY = motionEvent . getY ( 0 ) - motionEvent . getY ( 1 ) ;
133- var radians = Math . atan ( deltaY / deltaX ) ;
134- var degrees = radians * ( 180 / Math . PI ) ;
135-
136- var args = < definition . RotationGestureEventData > {
137- type : definition . GestureTypes . rotation ,
138- view : owner . _target ,
139- android : motionEvent ,
140- rotation : degrees ,
141- }
142-
143- var observer = that . get ( ) ;
144- if ( observer && observer . callback ) {
145- observer . callback . call ( observer . _context , args ) ;
146- }
147-
148- }
149-
150- return true ;
151- }
152- } ) ;
153-
154- target . android . setOnTouchListener ( this . _onTouchListener ) ;
155102 }
156103}
157104
@@ -193,24 +140,30 @@ function _executeCallback(observer: GesturesObserver, args: definition.GestureEv
193140class TapAndDoubleTapGestureListener extends android . view . GestureDetector . SimpleOnGestureListener {
194141 private _observer : GesturesObserver ;
195142 private _target : view . View ;
143+ private _type : number ;
196144
197- constructor ( observer : GesturesObserver , target : view . View ) {
145+ constructor ( observer : GesturesObserver , target : view . View , type : number ) {
198146 super ( ) ;
199147
200148 this . _observer = observer ;
201149 this . _target = target ;
150+ this . _type = type ;
202151 return global . __native ( this ) ;
203152 }
204153
205154 public onSingleTapConfirmed ( motionEvent : android . view . MotionEvent ) : boolean {
206- var args = _getArgs ( definition . GestureTypes . tap , this . _target , motionEvent ) ;
207- _executeCallback ( this . _observer , args ) ;
155+ if ( this . _type === definition . GestureTypes . tap ) {
156+ var args = _getArgs ( definition . GestureTypes . tap , this . _target , motionEvent ) ;
157+ _executeCallback ( this . _observer , args ) ;
158+ }
208159 return true ;
209160 }
210161
211162 public onDoubleTap ( motionEvent : android . view . MotionEvent ) : boolean {
212- var args = _getArgs ( definition . GestureTypes . doubleTap , this . _target , motionEvent ) ;
213- _executeCallback ( this . _observer , args ) ;
163+ if ( this . _type === definition . GestureTypes . doubleTap ) {
164+ var args = _getArgs ( definition . GestureTypes . doubleTap , this . _target , motionEvent ) ;
165+ _executeCallback ( this . _observer , args ) ;
166+ }
214167 return true ;
215168 }
216169
@@ -219,8 +172,10 @@ class TapAndDoubleTapGestureListener extends android.view.GestureDetector.Simple
219172 }
220173
221174 public onLongPress ( motionEvent : android . view . MotionEvent ) : boolean {
222- var args = _getArgs ( definition . GestureTypes . longPress , this . _target , motionEvent ) ;
223- _executeCallback ( this . _observer , args ) ;
175+ if ( this . _type === definition . GestureTypes . longPress ) {
176+ var args = _getArgs ( definition . GestureTypes . longPress , this . _target , motionEvent ) ;
177+ _executeCallback ( this . _observer , args ) ;
178+ }
224179 return true ;
225180 }
226181}
0 commit comments