テーブルの行を長押しして、その行に対する特別な処理を行いたくてTableViewのlongpressイベントを使おうとしました。

プログラムはCoffeeScriptで書いてますので自分で試す場合はJavaScriptに変換して下さい。

出力結果:

[DEBUG] longpress> undefined undefined

行の情報が渡ってこねー(-ω-)

そこで何が呼ばれてるのかtouch系のイベントを並べて見てみると、

出力結果:

[DEBUG] touchstart> 1 TITLE-2
[DEBUG] longpress> undefined undefined
[DEBUG] touchend> 1 TITLE-2
[DEBUG] click> 1 TITLE-2

touchstartでindexやrowを覚えて、longpressが起こったときに使えれば良さそうです。 覚えた情報はtouchendで初期化するとよさげ。

ところがよく見ると余計なことにclickも呼ばれている(-ω-)

longpressのでclickイベントの発火を抑えるいい方法が見つからず、結局longpressの処理内でフラグを立てclick処理で判断するというコードに落ち着きました。

あまりカッコよくはないですね。Titanium側でlongpressが検知されたらclickは呼ばない仕様にしてもらえたほうが自然な気がします。

ひょとしたらclickが呼ばれないと何かできなくなる操作があるのかなぁ。