美文网首页uin-app简明uniapp教程
监听事件(系统事件+设备按键事件+自定义事件)

监听事件(系统事件+设备按键事件+自定义事件)

作者: 瑟闻风倾 | 来源:发表于2019-12-06 09:19 被阅读0次

1. 系统事件

Events模块管理客户端事件,包括系统事件,如扩展API加载完毕、程序前后台切换等。


监听系统事件.png

(1) eg1:监听网络状态变化

onLoad:function(){
        // #ifdef APP-PLUS
        var appid = plus.runtime.appid;
        console.log('应用的 appid 为:' + appid);
        
        // 监听设备网络状态变化事件
        plus.globalEvent.addEventListener('netchange', function(){
            console.log("监听设备网络状态变化事");
            uni.showToast({
                title:"网络状态变化"
            })
            
        });
        // #endif
        
    },

2. 设备按键事件

Key管理设备按键事件


设备按键事件.png
KeyType的值(String 类型) 说明 场景示例 Android平台 IOS平台
backbutton 设备“返回”按钮按键事件 如果需要改变默认“返回”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"backbutton"事件。如: 监听back键事件并实现和home键一样的效果 默认处理逻辑为退出应用。 标题栏的“返回”按钮点击时触发此事件。 默认不处理此事件。
keydown 键按下事件 如果需要改变默认键按下的处理逻辑,则可通过plus.key.addEventListener来注册监听"keydown"事件。 可通过回调函数中KeyEvent对象的keyCode来获取按下的键值。 根据系统keydown事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。 不触发此事件。
keyup 键松开事件 如果需要改变默认键松开的处理逻辑,则可通过plus.key.addEventListener来注册监听"keyup"事件。 可通过回调函数中KeyEvent对象的keyCode来获取松开的键值。 根据系统keyup事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。 不触发此事件。
longpressed 键长按事件 如果需要改变默认长按键的处理逻辑,则可通过plus.key.addEventListener来注册监听"longpressed"事件。 长按键时会多次触发回调函数,通过回调函数中KeyEvent对象的keyCode来获取长按的键值。 根据系统keyup事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。 不触发此事件。
menubutton 设备“菜单”按钮按键事件 如果需要改变默认“菜单”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"menubutton"事件。 默认处理逻辑无操作。 不触发此事件。
searchbutton 设备“搜索”按钮按键事件 如果需要改变默认“搜索”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"searchbutton"事件。 默认处理逻辑为打开系统搜索应用。 不触发此事件。
volumeupbutton 设备“音量+”按钮按键事件 如果需要改变默认“音量+”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"volumeupbutton"事件。 默认处理逻辑为增加系统音量。 不触发此事件。
volumedownbutton 设备“音量-”按钮按键事件 如果需要改变默认“音量-”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"volumedownbutton"事件。 默认处理逻辑为减少系统音量。 不触发此事件。

(1) eg1:监听back键

  • 方法一
onBackPress:function(event){//只有返回值为 true 时,才表示不执行默认的返回,自行处理此时的业务逻辑
    console.log("点击了返回键-onBackPress:" + JSON.stringify(event));
    /* if (event.from === "backbutton") {
        //自定义逻辑
        return true;
    } */    
}

点击返回键,则打印结果为

点击了返回键-onBackPress:{"from":"backbutton"}
  • 方法二
onLoad:function(){
    // #ifdef APP-PLUS
    plus.key.addEventListener('backbutton',function(KeyEvent){
        console.log("点击了返回键:" + JSON.stringify(KeyEvent));
        console.log("点击了返回键:" + KeyEvent.keyCode);
    });
    // #endif       
},

点击返回键,则打印结果为

点击了返回键:{"keycode":"back","keyCode":4,"keyType":"back"} 
点击了返回键:4 

说明:本人使用真机测试,平板上的各个虚拟按键对应的键值码如下,不同机器可能对应的键值码不一样。可参考键盘上的按键与对应的键码值keyCode

按键与对应的键值码keyCode.png

(2) eg2:监听键按下事件

onLoad:function(){
    // #ifdef APP-PLUS
    plus.key.addEventListener('keydown',function(KeyEvent){
        console.log("按下了键:" + JSON.stringify(KeyEvent));
        console.log("按下了键:" + KeyEvent.keyCode);
        if(KeyEvent.keyCode == 4){
            plus.nativeUI.toast("按下了回车键");
        }else if(KeyEvent.keyCode == 24){
            plus.nativeUI.toast("按下了音量加键");
        }else if(KeyEvent.keyCode == 25){
            plus.nativeUI.toast("按下了音量减键");
        }else if(KeyEvent.keyCode == 82){
            plus.nativeUI.toast("按下了三点键");
        }else{
            plus.nativeUI.toast(KeyEvent.keyCode + "");
        }
    });
    // #endif           
},

以按下back键为例,则打印结果为

按下了键:{"keycode":"keydown","keyCode":4,"keyType":"keydown"} 
按下了键:4 

(3) eg3:监听键松开事件

onLoad:function(){
    // #ifdef APP-PLUS
    plus.key.addEventListener('keyup',function(KeyEvent){
        console.log("松开了键:" + JSON.stringify(KeyEvent));
        console.log("松开了键:" + KeyEvent.keyCode);
    });
    // #endif           
},

以松开back键为例,则打印结果为

松开了键:{"keycode":"keyup","keyCode":4,"keyType":"keyup"}
松开了键:4 

backbuttonkeydownkeyup事件不同同时获取到打印结果。

(4) eg4:监听键长按事件

onLoad:function(){
    // #ifdef APP-PLUS
    plus.key.addEventListener('keyup',function(KeyEvent){
        console.log("长按了键:" + JSON.stringify(KeyEvent));
        console.log("长按了键:" + KeyEvent.keyCode);    
    });
    // #endif           
},

注意:长按back键或者Home键等,都未获取到打印结果。

3. 监听自定义事件

相关文章

网友评论

    本文标题:监听事件(系统事件+设备按键事件+自定义事件)

    本文链接:https://www.haomeiwen.com/subject/gqjpwctx.html