2016-04-27 4 views
0

リストビュー内では、私はlistviewテンプレートを持っていて、その内部には異なる要素と異なるタップイベントリスナーがあります。スクロールしているアイテムをすばやくクリックしている間にスクロールを停止できない場合は、アイテムを開きますか?

IOSでは、画面上で高速ですばやくタッチします。 スクロールを停止するのではなく項目ページに移動するので、以下の方法でスクロールを停止したいと考えています。修正できません。

期待される結果:スクロールを停止する スクロールを停止するために画面にタッチすると、画面の項目ページをタッチします。

実際の結果:els partに移動します。スクロールを停止できません。 スクロールを停止する代わりに、画面上をスクロールしている(タップしたイベントをタップ)。

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="onNavigatingTo"> 
    <ListView items="{{ menu }}" row="1" id="mylist" > 
    <ListView.itemTemplate> 
     <GridLayout columns="auto, *"> 
     <Image src="{{ imageURL }}" row="0" cssClass="icon" tap="myTapListener"/> 
     <StackLayout col="1" tap="myTapListener1"> 
      <Label text="{{ title }}" cssClass="name"/> 
      <Label text="{{ subtitle }}" cssClass="location"/> 
     </StackLayout> 
     </GridLayout> 
    </ListView.itemTemplate> 
    </ListView> 
</Page 



exports.myTapListener = function(args) { 
    var item = args.object; 
    if(item.page.getViewById("mylist").isScrolling) { 
     console.log("Scroll stopped: " + item.page.getViewById("mylist).isScrolling); 
     return; 
    } else { 
     console.log("unable to stop:" + item.page.getViewById("mylist).isScrolling); 
    } 
} 

exports.myTapListener1 = function(args) { 
    var item = args.object; 
    if(item.page.getViewById("mylist").isScrolling) { 
     console.log("Scroll stopped: " + item.page.getViewById("mylist).isScrolling); 
     return; 
    } else { 
     console.log("unable to stop:" + item.page.getViewById("mylist).isScrolling); 
    } 
} 
+0

私はスクロール中に画面上をタッチします。 期待される結果:スクロールを停止するには 実際の結果は次のとおりです。スクロールを停止できません。常にfalseを返します。 私が本当だ場合、私は '(item.page.getViewById( "マイリスト")isScrolling。IF){ はconsole.logは( "スクロール停止:" このアプローチによって停止することができます+ item.page.getViewById (私は偽の応答を得スクロールしながらmylistという ")isScrolling' "mylistという).isScrolling); リターン は} ' –

答えて

2

JSコードをする必要があります。これらのイベントハンドラで args.object

var frame = require('ui/frame'); 

exports.myTapListener = function(args) { 
    var page = frame.topmost().currentPage; 
    if(page.getViewById("mylist").isScrolling) { 
     console.log(page.getViewById("mylist").isScrolling); 
    } else { 
     topmost().navigate("module/a1") 
    } 
} 

exports.myTapListener1 = function(args) { 
    var page = frame.topmost().currentPage; 
    if(page.getViewById("mylist").isScrolling) { 
     console.log(page.getViewById("mylist).isScrolling); 
    } else { 
     topmost().navigate("module/a2") 
    } 
} 

は、ページオブジェクトではありません。イベントを生成する項目です。したがって、現在のページを参照する必要がありますframe.topmost()。現在のページ

+0

私はその後、私がナビゲートするためにタップしますが ' page.getViewById(スクロール停止しよう"。 –

関連する問題