こんにちは!青木です!

前回に引き続き【SDの性能を最大限に活用する】をテーマに書いていきたいと思います。今回は、タッチ操作の際にEventをトリガーするTipsをご紹介します。前回のブログは下記よりご参照下さい。

【GXTips:SDG】SDの性能を最大限に活用する(第一回:1画面に複数のグリッドを表示する)

一般的にSD向けのアプリは、ユーザーのアクションによって動作する処理が多々あります。最近は、「Windows 8」も登場し、タッチ操作への違和感というのが徐々に払拭されつつあるようです。

当然ながらGeneXusもそのタッチ操作に対応しています。具体的には、ユーザーのタッチ操作のアクションに対してEventをトリガーすることが可能です。今回ご紹介するのは、タッチ操作の代表格の下記7種類です。

・Tap(タップ)        →画面を一回タッチします。

・DoubleTap(ダブルタップ) →画面を続けて2回タップします。

・LongTap(ロングタップ)  →いわゆる「長押」の操作です。

・Swipe(スワイプ)      →画面をこするような操作をします。

→上下左右の4方向あります。

(EX)SwipeLeft(スワイプレフト)左方向にこするような操作

 

今回はあくまで【操作の検知】と、【具体的なEventの記述方法】に着目して書いていきます。

TapPanel

 

 

 

 

 

 

 

 

 

 

 

上記のような矢印と指のImageを用意しました。このImageにユーザーがアクションを実行した場合のEventを記述したいと思います。今回はメッセージの表示だけ記述します。

///////////////////////////////////////////////////////////////////////////////////////////////

【このImageのControlNameがYajirushiの場合】

Event Yajirushi.Tap
Msg(“タップされました”)
EndEvent

Event Yajirushi.DoubleTap
Msg(“ダブルタップされました”)
EndEvent

Event Yajirushi.LongTap
Msg(“ロングタップ(長押)されました”)
EndEvent

Event Yajirushi.SwipeDown
Msg(“下側にスワイプされました”)
EndEvent

Event Yajirushi.SwipeLeft
Msg(“左側にスワイプされました”)
EndEvent

Event Yajirushi.SwipeRight
Msg(“右側にスワイプされました”)
EndEvent

Event Yajirushi.SwipeUp
Msg(“上側にスワイプされました”)
EndEvent

////////////////////////////////////////////////////////////////////////////////////////

例えば、画面全体でアクションを検知したい場合は、メインのテーブルのControlNameを指定すればOKです。

(EX)//////////////////////////////////////////////////////////

Event MainTable.Action

//テーブル全体でアクション検知

EndEvent

///////////////////////////////////////////////////////////////////

TapTopEX

DoubleTap

 

 

 

 

 

 

 

 

SwipeLeft

SwipeDown

 

 

 

 

 

 

 

 

実行画面は、iPhone4のKBN(ナレッジベースナビゲーター)利用です。全てのアクションを正確に検知し、正しくEventが実行されていることが分かります。

androd (AQOUS Phone 203SH)ですと、上下スワイプとロングタップを検知出来ませんでした。(こちらは引き続き調査したいと思っています。)

このような技術があると、よりユーザビリティの高いアプリの開発が可能だと思います。また、GeneXusのSDGでは、Drag操作とDrop操作にも対応しておりますので、またの機会にご紹介できれば、と思っております。

今回は以上です。

最後までご覧頂きありがとうございました。