最近のアクセス:
ネイティブモバイルのタッチイベント

アプリケーションの UX (User eXperience (ユーザーエクスペリエンス)、ルック & フィール) は、モバイルプラットフォームでは非常に重要です。これは、デザイン、画面のナビゲーション、アプリケーション全体での情報整理の仕方によって改善することができます。しかし、ネイティブモバイルのユーザーが期待する主要な機能として、デバイス上で行った操作に対してアプリケーションがきちんと反応するということもあります。
タッチスクリーン搭載デバイスの場合、情報やコマンドの入力方法は、画面との対話という形になります。
こうした入力はジェスチャーと呼ばれています。アプリケーションが優れたユーザーエクスペリエンスを提供するためには、ジェスチャーを考慮する必要があります。

GeneXus で認識されるジェスチャー

  • Tap (タップ)
    コントロールを指先で短くタッチします。
  • DoubleTap (ダブルタップ)
    コントロールを指先ですばやく 2 回タッチします。
  • LongTap (ロングタップ)
    コントロールを指先でしばらくタッチしたままにします。
  • Drag and Drop (ドラッグ アンド ドロップ)
    コントロールを指先でタッチし、指を離さずに目標の位置まで移動します。
  • SwipeRight (右にスワイプ)
    コントロールを指先でタッチし、すばやく右に動かします。
  • SwipeLeft (左にスワイプ)
    コントロールを指先でタッチし、すばやく左に動かします。
  • SwipeUp (上にスワイプ)
    コントロールを指先でタッチし、すばやく上に動かします。
  • SwipeDown (下にスワイプ)
    コントロールを指先でタッチし、すばやく下に動かします。
  • Swipe (スワイプ)
    上記のいずれかのスワイプジェスチャーです。

ジェスチャーを受け取れるオブジェクト

  • Image
  • Textblock
  • Table
  • 項目属性 (読み取り専用)
  • 変数 (読み取り専用)
  • その他のほとんどのコントロール
こうしたジェスチャーはすべて、画面コントロールに関連付けられたイベントとして GeneXus でエンコードされます。

イベントをコントロールに関連付ける方法

1 つ目のメカニズムは、ユーザーコントロールの右クリックによるものです (これまでは、ツールボックスからレイアウトにドラッグしていました)。
このアクションにより、そのコントロールに関連付けられるすべてのイベントが入ったコンテキストメニューが表示されます (下の図を参照)。
イメージ:33319.png
オプションのいずれかを選択すると、 [ レイアウト ] タブから [ イベント ] タブへ自動的にリダイレクトされ、そのコントロール (この場合は、「Textblock1」という名前の TextBlock) に関連付けられたイベントが選択され、入力可能な状態になります。
Event Textblock1.Tap 
    Msg("Textblock のタップイベントが実行されました")
EndEvent
代わりに、 [ イベント ] タブに移動し、候補メニューを使って、イベントの記述を開始することもできます。
次のメニューは、コントロールのコントロール名に続けてドットを入力 (例: 'Textblock1.') すると表示されます。
イメージ:33318.png

コントロールとコンテナ: 実行されるタッチイベント

タッチイベントに対応するオブジェクトには、コンテナや編集不可のコントロールがあります。コントロールやコンテナにタッチイベントを定義する場合は、特別な考慮事項があります。

レイアウトに MainTable というテーブルコントロールがあり、さらに MainTable コントロールの内部MyImg という画像コントロールがあるとします (つまり、MainTable はコンテナです)。
さらに、MainTable に対し、Tap イベントと Swipe イベントのコードを記述します。MyImg には、LongTap イベントと Swipe イベントのコードを記述します。
Tap イベントが MyImg に対して実行された場合 (このオブジェクトは Tap イベントを処理しないため)、このタッチイベントは、Tap イベントを処理するコンテナが見つかるまで階層順に上位コンテナにプロパゲート (伝播) されていきます。この例では、Tap イベントは MainTable に対して実行されます。
Swipe イベントが MyImg に対して実行された場合、このイベントがそのまま実行され、コンテナにプロパゲートされないため、MyImg.Swipe に対して定義されているコードだけが実行されます。

プラットフォームに関する制限

  • Android でのタッチイベントのプロパゲーション: コントロールにタッチイベントが定義されていない場合、タッチイベントはそのコンテナにプロパゲートされます。コントロールにタッチイベントが定義されている場合は、そのコンテナでそうしたイベントを処理できる場合でも、イベントはプロパゲートされません。

ユーザーへのフィードバック

ジェスチャーを実行したときにユーザーにフィードバックが返されるように、TapDoubleTap、および LongTap ジェスチャーはコントロールの強調表示をトリガーします。つまり、コントロールがタップされると、ユーザーにフィードバックを返すために、そのコントロールの Highlighted Background クラスプロパティが考慮されます。






サブページ
Created: 14/09/18 03:13 by Admin Last update: 23/04/24 18:05 by Admin
カテゴリ
Powered by GXwiki 3.0