截至到Sencha Touch2.1为止,Sencha Touch支持的事件包括以下19种

doubletap
drag
dragend
dragstart
longpress
painted
pinch
pinchend
pinchstart
resize
rotate
rotateend
rotatestart
singletap
swipe
tap
taphold
touchmove
touchstart

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这19种事件是Sencha Touch支持的响应用户操作的事件,作用的对象是Ext.dom.Element,可以理解成原生事件。

因为在Sencha Touch里,每个component都提供各种事件的支持,这些事件作用的对象是该component,

如Ext.Panel,支持的事件有31个。

如果希望在某个component上响应这些原生事件,可以通过Ext.get(compId)拿到该component对应的

dom element.

eg:在某个view上响应swipe,tap等事件,而该view支持的事件中并没有swipe,tap等。

1.定义view,继承container

Ext.define('TouchPad', {

    extend: 'Ext.Container',

    xtype: 'toucheventpad',
    id: 'touchpad',                 //定义id可以通过Ext.get()得到该TouchPad的dom element
    config: {
        flex: 1,
        margin: 10,
        layout: {
            type: 'vbox',
            pack: 'center',
            align: 'stretch'
        },
        items: [
        {
            html: 'Touch here!'
        }
        ]
    }
});

 

2.在另外一个view中为TouchPad添加listener

Ext.define('TouchEvents', {
    extend: 'Ext.Container',
    xtype: 'touchevents',

    requires: [
        'TouchPad',
    ],

     initialize: function() {
         this.callParent(arguments);

         // padElement为Ext.dom.Element对象

         var padElement = Ext.get('touchpad');

         //添加listener为onTouchPadEvent

         padElement.on(['touchstart', 'touchend', 'touchmove',
          'swipe', 'dragstart', 'drag', 'dragend',
          'tap', 'doubletap', 'longpress', 'pinch', 'rotate'],
          'onTouchPadEvent', this);
     },

     //事件响应函数

     onTouchPadEvent: function(e, target, options, eventController) {
         console.log(eventController.info.eventName);     

     }
});