【问题标题】:Stop event propagation in NativeScript ios tap event在 NativeScript ios 点击事件中停止事件传播
【发布时间】:2017-09-25 11:03:58
【问题描述】:

我的代码中有一个tap 事件。它的父级(不是直接父级)也有tap 事件。在 Android 中,一切正常。但在ios 中,事件向上传播到该父级。如何停止该事件传播(例如javascript 中的event.stopPropagation())。

示例 XML 代码:

<StackLayout  tap="newsDetails" data-args="{{ $value }}">
     <StackLayout orientation="horizontal" >
         <Label text="Share" class="icon" tap="shareNews" data-args="{{ $value }}"/>
     </StackLayout>
</StackLayout>

注意:我使用的是 NativeScript 核心

谢谢。

【问题讨论】:

    标签: nativescript stoppropagation


    【解决方案1】:

    您可以使用布尔属性isUserInteractionEnabled,但是,这不会解决问题,因为它也会停止所有嵌套元素的用户交互。在同一个区域进行多个点击事件根本不是一个好习惯。

    【讨论】:

    【解决方案2】:

    我在 android 上遇到了同样的问题,这是我想出的一个简单的解决方案,虽然不优雅但很有效:

    private ignoreTap = false;
    
    shareNews(){
      this.ignoreTap = true;
      // ...
    }
    
    newsDetails(){
      if (this.ignoreTap) { this.ignoreTap = false; return; }
      // ...
    }
    

    ignoreTap 标志将停止根函数的执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      相关资源
      最近更新 更多