【问题标题】:cordova-plugin-screen-orientation not working on specific pagescordova-plugin-screen-orientation 在特定页面上不起作用
【发布时间】:2016-08-04 22:40:28
【问题描述】:

我只需要在一个视图上允许两个方向,但其他 10 个视图的其余部分应锁定为纵向。我不介意通过将我的 10 个视图的控制器中的每一个都设置为锁定纵向来单调乏味地执行此操作。但我似乎无法让屏幕方向插件工作。

我使用 CLI 安装插件(安装成功)

然后这是代码

config.xml:

<preference name="Orientation" value="default"/>

控制器:(这不起作用)

.controller('ProfileCtrl', function($scope, $state, $stateParams, $ionicHistory, $rootScope, $ionicPopup, $ionicPlatform) {

$ionicPlatform.ready(function() {
    screen.lockOrientation('landscape');
});

提前致谢:)

【问题讨论】:

  • 由于当时代表不足,我无法早点发表评论,但您能否发布您的环境/配置详细信息?
  • 我将发布一个关于正在发生的事情的截屏视频...但基本上我设置了具有更改方向功能的按钮...当我单击横向按钮时,它会快速切换到风景,然后回到肖像......所以它可以工作,但只是一毫秒哈哈
  • Google 云端硬盘链接到视频:drive.google.com/file/d/0Bw-UHZL-BFMtYmRUbTRRUHBXcVU/…
  • 您是否尝试过在物理设备上进行测试?
  • 我没有...我在将设备连接到 xcode 时遇到问题('错误:找不到开发人员磁盘映像')...您认为尝试在物理设备上会有区别吗?

标签: javascript angularjs cordova ionic-framework


【解决方案1】:

您应该先检查 Cordova 是否已加载。

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    screen.lockOrientation('portrait');
}

或者因为您使用的是 Ionic:

$ionicPlatform.ready(function() {
    screen.lockOrientation('portrait');
});

(对于后者,请务必注入 $ionicPlatform 依赖项。)

【讨论】:

  • 仍然无法正常工作...如果有帮助,我添加了我的 config.xml 代码
  • 根据thread,似乎插件 js 文件需要包含在您的 index.html 文件中才能正常工作。 &lt;script type="text/javascript" src="plugins/cordova-plugin-screen-orientation/www/screenorientation.js"&gt;&lt;/script&gt;
  • 这也不起作用...我认为 存在问题
  • 我有同样的问题,突然停止工作。这些解决方案都不适用。
【解决方案2】:

使用下面的代码,它会按预期工作

screen.orientation.lock('landscape');

【讨论】:

    【解决方案3】:

    查看本教程。它帮助我解决了同样的问题: https://topherpedersen.blog/2019/09/26/cordova-screen-orientation-lock-plugin-not-working/

    // Lock Device Orientation
    function lockDeviceOrientationCallback() {
        // set to either landscape
        screen.orientation.lock('portrait');
        console.log("locking device orientation...");
    }
    document.addEventListener("deviceready", lockDeviceOrientationCallback, false);
    

    解决方案类似于上面在设备准备好时设置事件侦听器的答案。我发现这个效果更好,因为 cordova 已经有一个设备就绪的监听器,我似乎可以继续使用它。

    【讨论】:

    【解决方案4】:

    我把它放在Interval中并且它起作用了:

    let ticks = setInterval((timer),10);
    function timer() {
        function lockDeviceOrientationCallback() {
            // set to either landscape
            screen.orientation.lock('portrait');
            console.log("locking device orientation...");
        }
        document.addEventListener("deviceready", lockDeviceOrientationCallback, false);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多