左右互搏
左右互搏
  • 发布:2020-06-02 13:32
  • 更新:2020-06-03 14:38
  • 阅读:850

#插件讨论# 【 导航栏示例应用 - DCloud_App_Array 】--.webview.setStyle触发两次

分类:uni-app

关于onNavigationBarSearchInputFocusChanged或onNavigationBarSearchInputChanged或者onNavigationBarButtonTap等监听时会触发两次,执行两次里面的代码。

我已经找出执行两次的原因了,是下面这两个语句,两条语句,不管是在一个方法里还是不同的方法,都会导致执行两次。目前发现只有在android出现,ios没有这个情况。这是bug?该怎么解决?

this.webview = this.$mp.page.$getAppWebview();

this.webview.setStyle({ titleNView: { searchInput: { placeholder: this.defaultKeyword } } });

这问题在ios和android测试了,目前只发现android会出现。下面附上重新代码

===================================vue页面

<template>
<view>

</view>  

</template>

<script>
export default {
data() {
return {
webview:{},
defaultKeyword:"anything"
};
},
methods:{
ddd() {
this.webview = this.$mp.page.$getAppWebview(); //窗口对象
this.webview.setStyle({
titleNView: {
searchInput: {
placeholder: this.defaultKeyword
}
}
});
}
},
onLoad:function(){
this.ddd();
},
onNavigationBarSearchInputClicked:function(){

    },  
    onNavigationBarSearchInputChanged:function(e){  
        console.log(e.text);  
        console.log("我会被错误地执行两次~~");  
    }  
}  

</script>

<style lang="scss">

</style>

=====================================pages配置

{
"path" : "pages/search/search",
"style": {
"navigationBarTitleText": "搜索",
"app-plus": {
"softinputNavBar": "none",
"titleNView": {
"searchInput": {
"autoFocus": true,
"borderRadius": "16px",
"backgroundColor": "#ffffff",
"placeholder": "输入要搜索内容",
"placeholderColor":"#999"
},
"buttons": [{
"text": "搜索",
"fontSize": "16px",
"width": "48px",
"borderRadius": "15px"
}]
}
}
}
}

2020-06-02 13:32 负责人:DCloud_Android_zl 分享
已邀请:
左右互搏

左右互搏 (作者)

<template>  
    <view>  

    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                webview:{},  
                defaultKeyword:"anything"  
            };  
        },  
        methods:{  
            ddd() {  
                this.webview = this.$mp.page.$getAppWebview(); //窗口对象  
                this.webview.setStyle({  
                    titleNView: {  
                        searchInput: {  
                            placeholder: this.defaultKeyword  
                        }  
                    }  
                });  
            }  
        },  
        onLoad:function(){  
            this.ddd();  
        },  
        onNavigationBarSearchInputClicked:function(){  

        },  
        onNavigationBarSearchInputChanged:function(e){  
            console.log(e.text);  
            console.log("我会被错误地执行两次~~");  
        }  
    }  
</script>  

<style lang="scss">  

</style>  
左右互搏

左右互搏 (作者)

pages

{  
            "path" : "pages/search/search",  
            "style": {  
                "navigationBarTitleText": "搜索",  
                "app-plus": {  
                    "softinputNavBar": "none",  
                    "titleNView": {  
                        "searchInput": {  
                            "autoFocus": true,  
                            "borderRadius": "16px",  
                            "backgroundColor": "#ffffff",  
                            "placeholder": "输入要搜索内容",  
                            "placeholderColor":"#999"  
                        },  
                        "buttons": [{  
                            "text": "搜索",  
                            "fontSize": "16px",  
                            "width": "48px",  
                            "borderRadius": "15px"  
                        }]  
                    }  
                }  
            }  
        }
左右互搏

左右互搏 (作者)

左右互搏

左右互搏 (作者)

再补充一点,在Android下
webview.setTitleNViewSearchInputFocus();

设置false时,无法完全起作用,只是把软键盘收起来,输入光标焦点还是留在输入框那里

在IOS下没有这个问题

  • DCloud_Android_zl

    我这边测试,键盘可以回收,焦点也会失去。

    2020-06-03 16:38

DCloud_Android_zl

DCloud_Android_zl

麻烦提供一个完整的demo吧,你说的这俩问题我用最新的基座无法复现。

  • 左右互搏 (作者)

    直接把前面的代码,贴到一个新建项目就能重新问题。

    下面附件是我做的demo,用的2.7.9,在Android真机调试,问题重现

    2020-06-03 14:33

  • 左右互搏 (作者)

    再补充新发现的一个问题:

    在Android下,用onNavigationBarButtonTap和onNavigationBarSearchInputConfirmed监听搜索按钮,用户按下搜索后,原生导航栏的搜索框都不会失去焦点。

    2020-06-03 14:37

  • DCloud_Android_zl

    回复 左右互搏: 我们这个的标准是一致的,两个平台都不会失去焦点。

    2020-06-03 16:37

  • 左右互搏 (作者)

    回复 DCloud_Android_zl: 按照正常的使用逻辑,用户按下搜索后,输入框的焦点应该消失才对,就像input组件一样。假如不失去焦点,后面的交互逻辑和关键字监听都比较麻烦。PS:IOS实测会失去焦点

    2020-06-03 17:40

  • DCloud_Android_zl

    回复 左右互搏: 我们对比了ios,触发事件的事件的时候确实不会收键盘。

    2020-06-04 18:32

  • DCloud_Android_zl

    回复 DCloud_Android_zl: 如果方便的话可以把QQ号给我,提供个视频,我看一下

    2020-06-04 18:33

左右互搏

左右互搏 (作者)

补充demo

该问题目前已经被锁定, 无法添加新回复