禁用Bryntom Touch Schedule/Sencha Touch框架页面滚动/平移

0s7z1bwu  于 2022-10-24  发布在  Angular
关注(0)|答案(1)|浏览(226)

我们已经创建了一个响应性的单页html应用程序使用Angular ,并找到了扩展时间表和触摸时间表组件从布林图姆,这正是我们需要的。
Brytnum的Touch时间表建立在Secha Touch框架的基础上。
我正在将Touch时间表加载到Ext.Panel中,该Ext.Panel加载到我页面的div中。这是与所有在身体层面加载触摸计划的示例的改变。
在加载了包含Touch Schedule的页面后,我们发现在移动设备:iPad、iPhone、Nexus 7上,整个身体都被锁定了,无法移动。这是该组件工作所必需的,但当我们弹出允许您输入预订信息的模式时,它不能滚动,而且比iPad还长。此外,当我们在Touch Schedule页面之后移动到应用程序中的其他页面时,离开屏幕的列表需要是可滚动的,并且是锁定的。
Brytunum向我们指出了sencha,因为这个问题不是在他们的代码中发生的,而sencha似乎相信所有用户都会将他们的框架用于整个应用程序,而不仅仅是一个组件,生活在一个页面上。
我们需要的组件是在一个锁定的屏幕和工作方式,但能够关闭窗口锁定时,我们的模式加载或当我们导航离开触摸时间表页面。
我们目前正在使用这些组件的以下版本:
Bryntom Touch Scheduler 1.0.7
Sencha Touch 2.3

g6ll5ycj

g6ll5ycj1#

我最终找到了这个问题。我发现窗口的TouchMove处理程序正在被防止Windows Normal处理程序的默认设置的处理程序覆盖。
在sencha-ouch-all.js函数中,应用Ext.Define(‘Ext.viewport.Default’)定义内的PreventPanning。
我找不到从包含调度网格的Ext全局对象或Ext容器调用添加侦听器/删除侦听器的方法。
我决定将这段代码添加到Ext.viewport.Default的构造器中,然后再返回这条语句。

Ext.doPreventPanning = this.doPreventPanning;
Ext.addWindowListener = this.addWindowListener;
Ext.removeWindowListener = this.removeWindowListener;

现在在我的Angular 控制器中,我创建了这两个函数

$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 e.AllowPanning();在modal.Result.中,我添加了:$Scope e.emovePanning();

相关问题