@@ -92,6 +92,7 @@ export class GesturesObserver {
9292 this . _target = null ;
9393 this . _callback = null ;
9494 this . _context = null ;
95+ this . gestureHandler = null ;
9596 }
9697 private _notifyTouch : boolean ;
9798
@@ -123,8 +124,7 @@ export class GesturesObserver {
123124 private _detach ( ) {
124125 if ( this . gestureHandler ) {
125126 this . gestureHandler . detachFromView ( this . target ) ;
126- this . gestureHandler = null ;
127- delete this . target . _gestureHandlers [ this . type ] ;
127+ // delete this.target._gestureHandlers[this.type];
128128 }
129129 this . _notifyTouch = false ;
130130 this . _eventData = { } ;
@@ -175,107 +175,76 @@ export class GesturesObserver {
175175 }
176176 } ;
177177 }
178- private _attach (
179- target : View & {
180- _gestureHandlers ?: any ;
181- } ,
182- type : GestureTypes
183- ) {
184- this . _detach ( ) ;
178+ private _attach ( target : View , type : GestureTypes ) {
185179 if ( type & GestureTypes . touch ) {
186180 this . _notifyTouch = true ;
187181 }
188182 const manager = Manager . getInstance ( ) ;
189- if ( ! target . _gestureHandlers ) {
190- target . _gestureHandlers = { } ;
191- }
192- let gestureHandler = target . _gestureHandlers [ type ] ;
183+ // if (!target._gestureHandlers) {
184+ // target._gestureHandlers = {};
185+ // }
186+ let gestureHandler = this . gestureHandler ;
193187
194- if ( type & GestureTypes . tap ) {
195- if ( ! gestureHandler ) {
188+ if ( ! gestureHandler ) {
189+ if ( type & GestureTypes . tap ) {
196190 gestureHandler = manager . createGestureHandler ( HandlerType . TAP , target [ 'TAP_HANDLER_TAG' ] , {
197191 simultaneousHandlers : [ ROOT_GESTURE_HANDLER_TAG ] ,
198192 waitFor : [ target [ 'LONGPRESS_HANDLER_TAG' ] , target [ 'DOUBLE_TAP_HANDLER_TAG' ] ] ,
199193 } ) ;
200- gestureHandler . attachToView ( target ) ;
201- target . _gestureHandlers [ type ] = gestureHandler ;
194+ gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . tap , GestureState . ACTIVE ) , this ) ;
202195 }
203- gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . tap , GestureState . ACTIVE ) , this ) ;
204- }
205- if ( type & GestureTypes . longPress ) {
206- if ( ! gestureHandler ) {
196+ if ( type & GestureTypes . longPress ) {
207197 gestureHandler = manager . createGestureHandler ( HandlerType . LONG_PRESS , target [ 'LONGPRESS_HANDLER_TAG' ] , {
208198 simultaneousHandlers : [ ROOT_GESTURE_HANDLER_TAG ] ,
209199 } ) ;
210- gestureHandler . attachToView ( target ) ;
211- target . _gestureHandlers [ type ] = gestureHandler ;
200+ gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . longPress , GestureState . ACTIVE ) , this ) ;
212201 }
213- gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . longPress , GestureState . ACTIVE ) , this ) ;
214- }
215- if ( type & GestureTypes . doubleTap ) {
216- if ( ! gestureHandler ) {
202+ if ( type & GestureTypes . doubleTap ) {
217203 gestureHandler = manager . createGestureHandler ( HandlerType . TAP , target [ 'DOUBLE_TAP_HANDLER_TAG' ] , {
218204 numberOfTaps : 2 ,
219205 simultaneousHandlers : [ ROOT_GESTURE_HANDLER_TAG ] ,
220206 } ) ;
221- gestureHandler . attachToView ( target ) ;
222- target . _gestureHandlers [ type ] = gestureHandler ;
207+ gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . doubleTap , GestureState . ACTIVE ) , this ) ;
223208 }
224- gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . doubleTap , GestureState . ACTIVE ) , this ) ;
225- }
226209
227- if ( type & GestureTypes . pinch ) {
228- if ( ! gestureHandler ) {
210+ if ( type & GestureTypes . pinch ) {
229211 gestureHandler = manager . createGestureHandler ( HandlerType . PINCH , target [ 'PINCH_HANDLER_TAG' ] , {
230212 simultaneousHandlers : [ target [ 'PAN_HANDLER_TAG' ] , ROOT_GESTURE_HANDLER_TAG ] ,
231213 } ) ;
232- gestureHandler . attachToView ( target ) ;
233- target . _gestureHandlers [ type ] = gestureHandler ;
214+ gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . pinch , GestureState . ACTIVE ) , this ) ;
215+ gestureHandler . on ( GestureHandlerTouchEvent , this . onGestureTouchChange ( GestureTypes . pinch ) , this ) ;
234216 }
235- gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . pinch , GestureState . ACTIVE ) , this ) ;
236- gestureHandler . on ( GestureHandlerTouchEvent , this . onGestureTouchChange ( GestureTypes . pinch ) , this ) ;
237- }
238217
239- if ( type & GestureTypes . swipe ) {
240- if ( ! gestureHandler ) {
218+ if ( type & GestureTypes . swipe ) {
241219 gestureHandler = manager . createGestureHandler ( HandlerType . FLING , TAG ++ , {
242220 simultaneousHandlers : [ ROOT_GESTURE_HANDLER_TAG ] ,
243221 } ) ;
244- gestureHandler . attachToView ( target ) ;
245- target . _gestureHandlers [ type ] = gestureHandler ;
222+ gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . swipe , GestureState . ACTIVE ) , this ) ;
246223 }
247- gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . swipe , GestureState . ACTIVE ) , this ) ;
248- }
249224
250- if ( type & GestureTypes . pan ) {
251- if ( ! gestureHandler ) {
225+ if ( type & GestureTypes . pan ) {
252226 gestureHandler = manager . createGestureHandler ( HandlerType . PAN , target [ 'PAN_HANDLER_TAG' ] , {
253227 simultaneousHandlers : [ target [ 'PINCH_HANDLER_TAG' ] , ROOT_GESTURE_HANDLER_TAG ] ,
254228 } ) ;
255- gestureHandler . attachToView ( target ) ;
256- target . _gestureHandlers [ type ] = gestureHandler ;
229+ gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . pan , GestureState . ACTIVE ) , this ) ;
230+ gestureHandler . on ( GestureHandlerTouchEvent , this . onGestureTouchChange ( GestureTypes . pan ) , this ) ;
257231 }
258- gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . pan , GestureState . ACTIVE ) , this ) ;
259- gestureHandler . on ( GestureHandlerTouchEvent , this . onGestureTouchChange ( GestureTypes . pan ) , this ) ;
260- }
261232
262- if ( type & GestureTypes . rotation ) {
263- if ( ! gestureHandler ) {
233+ if ( type & GestureTypes . rotation ) {
264234 gestureHandler = manager . createGestureHandler ( HandlerType . ROTATION , TAG ++ , {
265235 simultaneousHandlers : [ ROOT_GESTURE_HANDLER_TAG ] ,
266236 } ) ;
267- gestureHandler . attachToView ( target ) ;
268- target . _gestureHandlers [ type ] = gestureHandler ;
237+ gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . rotation , GestureState . ACTIVE ) , this ) ;
238+ gestureHandler . on ( GestureHandlerTouchEvent , this . onGestureTouchChange ( GestureTypes . rotation ) , this ) ;
269239 }
270- gestureHandler . on ( GestureHandlerStateEvent , this . onGestureStateChange ( GestureTypes . rotation , GestureState . ACTIVE ) , this ) ;
271- gestureHandler . on ( GestureHandlerTouchEvent , this . onGestureTouchChange ( GestureTypes . rotation ) , this ) ;
272240 }
273241 if ( type & GestureTypes . touch && global . isIOS ) {
274242 // let s not reimplement it for touch
275243 const nObserver = new NGesturesObserver ( target , this . callback , this . context ) ;
276244 nObserver . observe ( type ) ;
277245 this . nObserver = nObserver ;
278246 }
247+ gestureHandler . attachToView ( target ) ;
279248 this . gestureHandler = gestureHandler ;
280249 }
281250
0 commit comments