在我的nativescript应用中,我注意到有时点击不会正确触发。我必须点击几次才能触发事件。这发生在android和ios上。

如何增加自来水区?还有什么可能导致这种情况发生?

谢谢。

附言我尝试增加要捕获其tap事件的元素的填充,但这似乎无济于事。

最佳答案

这里有一些因素在起作用。

首先,当您在NativeScript中拦截页面级事件时,似乎会阻止其他窗口小部件的事件触发。例如,如果您点击一个文本字段,但是具有一个用于点击事件的页面级侦听器,则TextField上的点击将被页面级侦听器拦截。

其次,双击似乎可以利用事件中的计时问题,使tap事件冒泡到下一个监听小部件。

最后,当您在要点击的元素上添加填充时,点击不会在填充区域上注册。看来您只能在小部件的中间(在填充区域内)点击。在我的情况下,必须在垂直中心直接点击我要填充的TextField(并且填充为5px)。

要对其进行测试,请尝试从元素中删除填充,然后查看攻丝是否再次正常工作。

通过执行以下操作,我能够使用软件键盘创造出非常流畅/自然的体验:


将TextField包裹在StackLayout中,然后在PadLayout而不是小部件上放置填充
添加仅在敲击文本字段时才关闭软件键盘的页面级侦听器,并在触发该侦听器后将其删除。


例如:XML文件

<StackLayout id="loginFieldWrapper" padding="5 5 5 5">
    <TextView hint="Enter Login ID" id="loginField" keyboardType="number" returnKeyType="done" returnPress="{{hideKeyboard}}" />
</StackLayout>


支持javascript文件

   loginField.on(gestures.GestureTypes.tap, function(args) {
            page.on(gestures.GestureTypes.tap, function (args) {
                loginField.dismissSoftInput();
                page.off(gestures.GestureTypes.tap);
            });
    });

关于nativescript - native 水龙头区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38923245/

10-12 05:04