Ios Bryntum Touch Schedule/Sencha Touch framework页面滚动/平移禁用

Ios Bryntum Touch Schedule/Sencha Touch framework页面滚动/平移禁用,ios,angularjs,sencha-touch-2,Ios,Angularjs,Sencha Touch 2,我们使用Angular创建了一个响应迅速的单页html应用程序,并从Bryntum找到了Ext Schedule和Touch Schedule组件,这正是我们所需要的 Brytnum的触摸时间表建立在Secha触摸框架的基础上 我正在将触摸日程表加载到一个外部面板中,该面板将加载到我页面中的一个div中。这与所有在身体层面加载触摸时间表的示例有所不同 加载包含触摸时间表的页面后,我们发现在移动设备上:iPad、iPhone、Nexus7,整个身体都被锁定,无法移动。这是该组件工作所必需的,但当我

我们使用Angular创建了一个响应迅速的单页html应用程序,并从Bryntum找到了Ext Schedule和Touch Schedule组件,这正是我们所需要的

Brytnum的触摸时间表建立在Secha触摸框架的基础上

我正在将触摸日程表加载到一个外部面板中,该面板将加载到我页面中的一个div中。这与所有在身体层面加载触摸时间表的示例有所不同

加载包含触摸时间表的页面后,我们发现在移动设备上:iPad、iPhone、Nexus7,整个身体都被锁定,无法移动。这是该组件工作所必需的,但当我们弹出模式以允许您输入预订信息时,它无法滚动,并且比iPad更长。此外,当我们在触摸日程表页面之后移动到应用程序中的其他页面时,离开屏幕的列表需要可滚动并锁定

Brytunum将我们引向sencha,因为这个问题并不是在他们的代码中发生的,sencha似乎相信所有用户都会将他们的框架用于整个应用程序,而不仅仅是一个组件,生活在一个页面上

我们需要该组件位于锁定的屏幕中,并像它那样工作,但当我们加载模式或离开触摸日程表页面时,能够关闭窗口锁定

我们目前正在使用这些组件的以下版本:

Bryntum Touch Scheduler 1.0.7


Sencha Touch 2.3

我最终找到了这个问题。我发现窗口的touchmove处理程序被一个阻止windows正常处理程序默认值的处理程序覆盖

在sencha-touch-all.js函数中,在Ext.define('Ext.viewport.Default')定义中应用PreventPanning

我找不到从Ext全局对象或保存计划网格的Ext容器调用add Listener/remove Listener的方法

我决定在返回此语句之前,将此代码添加到Ext.viewport.Default的构造函数中

Ext.doPreventPanning = this.doPreventPanning;
Ext.addWindowListener = this.addWindowListener;
Ext.removeWindowListener = this.removeWindowListener;
现在在我的角度控制器中,我创建了这两个函数

$scope.allowPanning = function () {
    if (Ext != undefined && Ext.removeWindowListener != undefined && Ext.doPreventPanning != undefined) {
        Ext.removeWindowListener('touchmove', Ext.doPreventPanning, false);
    }
};
$scope.removePanning = function () {
    if (Ext != undefined && Ext.addWindowListener != undefined && Ext.doPreventPanning != undefined) {
        Ext.addWindowListener('touchmove', Ext.doPreventPanning, false);
    }
};
我将这个“解构器”功能添加到我的控制器中,以处理离开此视图的导航

$scope.$on("$destroy", function () {
    $scope.allowPanning();
});
在模态秀中,我补充道: $scope.allowPanning(); 在modal.result.中,我添加了: $scope.removePanning()