テーブルの行を長押しして、その行に対する特別な処理を行いたくて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が呼ばれないと何かできなくなる操作があるのかなぁ。
コメントする