2

Titaniumを使用してAndroidアプリを開発しています.titaniumのtableviewにtouchstarttouchendイベントを適用したい.私は次のコードを試しました:

var userWin = Ti.UI.currentWindow;
var data = [];
for (var i=0;i<5;i++)
{
    var row = Ti.UI.createTableViewRow({height:'auto',className:"row"});
    var username = Ti.UI.createLabel(
    {
        text:'user name',
        height:'auto',
        font:{fontSize:12, fontFamily:'Helvetica Neue', color:'#000'},
        width:'auto',
        color:'#000',
        textAlign:'left',
        top:0,
        left:35,
    });row.add(username);
    var imageView = Ti.UI.createImageView(
    {
        image:'../images/user.png',
        left:0,
        top:0,
        height:25,
        width:25
    });row.add(imageView);          
}
usertable_table.setData(data);
userWin.add(feed_table);    

userWin.addEventListener('touchstart', function(e){
    alert(e.x);
  // Ti.API.debug(['row touchstart', e]); 
});

テーブルの行をクリックしても、ポップアップは表示されず、タッチスタート イベントは適用されませ。 、出力を提供します。しかし、テーブルビューまたはテーブルビューの行に適用すると、機能しません。実際には、テーブルでスワイプイベントを試みていますが、それも機能しないため、touchstart および touchend イベントを試しました。この問題を解決する方法はありますか。

4

1 に答える 1

1

申し訳ありませんが、Titanium Docs で読むことができるように、 Android はまだTableViewRow を提供touchstartしていません。touchend他の解決策を見つけたかもしれませんが、他の誰かが同様の問題を抱えている可能性があるので、考えられる解決策のアイデアを提供したいと思います. 残念ながら、リスナーを行に追加してから、この行の要素をクリックすることができます。これは、SDK 3.0.0 以降で制御できるイベント バブリングのために機能します。以前のリリースでは、イベント ブベリングを防止するオプションがありませんでした。

スワイプも Android では提供されていないジェスチャです。スワイプに似たジェスチャを使用する場合は、行内のすべての要素の上に透明なビューを配置できます。

Ti.UI.createView({
  width: Ti.UI.FILL,
  height: Ti.UI.FILL, //should be row height, can be set explicitely if known
  backgroundColor: '#0000', //should be transparent
});

次に、スワイプに似たジェスチャのすべてのアルゴリズムをこのビューに適用できます。この Vie はユーザーが使用できる最上位の要素ですが、すべてのユーザー入力に反応する必要があります。ただし、この透明なビューの背後にある他の要素のリスナーは、もはや反応しないことに注意してください。

于 2013-02-18T19:41:03.787 に答える