Xamarin の watchOS メニュー コントロール (感圧タッチ)
Watch Kit には、watch アプリ画面に実装されたときにメニューをトリガーする感圧タッチ ジェスチャーが用意されています。
感圧タッチへの対応
インターフェイス コントローラーの Menu
が実装されている場合、ユーザーが感圧タッチを実行すると、メニューが表示されます。 メニューが実装されていない場合、画面は一時的にアニメーション化され、他のアクションは発生しません。
感圧タッチは画面上の特定の要素に関連付けされません。インターフェイス コントローラーにアタッチできるメニューは 1 つだけで、画面のどこで感圧タッチが押されるかに関係なく表示されます。
1 つから 4 つのメニュー オプションを表示できます。
メニューの追加
Menu
は、デザイン時にストーリーボードの InterfaceController
に追加する必要があります。 メニュー コントロールをインターフェイス コントローラーにドラッグすると、ストーリーボード プレビューに視覚的には表示されませんが、[ドキュメント アウトライン] パッドに メニュー が表示されます。
メニュー コントロールには、最大 4 つのメニュー項目を追加できます。 これらは[プロパティ] パッドで構成できます。 次の属性を設定できます。
- タイトル、および
- カスタム イメージ、または
- システム イメージ: Accept、Add、Block、Decline、Info、Maybe、More、Mute、Pause、Play、Repeat、Resume、Share、Shuffle、Speaker、Trash。
Action
を作成するには、[プロパティ] パッドの [イベント] セクションを選択し、アクション メソッドの名前を入力します。 部分メソッドはコード内に作成されます。これは、次のようにインターフェイス コントローラー クラスに実装できます。
partial void MenuItemTapped ()
{
Console.WriteLine ("A menu item was tapped.");
}
カスタム イメージ
iOS のタブ イメージと同様に、メニュー項目の画像には、背景を透けて表示できるアルファ チャネルを持つ不透明なパターンが必要です。
最適なパフォーマンスを得るために、メニューに使用するイメージを (watch アプリ拡張機能プロジェクトではなく) watch アプリ プロジェクトに追加する必要があります。
メニュー項目の変更
実行時の追加
実行時にインターフェイス コントローラーに Menu
を追加することはできませんが、MenuItem
のコレクションをプログラムで変更することは "できます"。
次に示すように、AddMenuItem
メソッドを使用します。
AddMenuItem (WKMenuItemIcon.Accept, "Yes", new ObjCRuntime.Selector ("tapped"));
Xamarin.iOS Watch Kit API には現在、AdMenuItem
メソッドの selector
が必要です。これは次のように宣言する必要があります。
[Export("tapped")]
void MenuItemTapped ()
{
Console.WriteLine ("The dynamically added 'Yes' menu item was tapped.");
}
実行時の削除
ClearAllMenuItems
メソッドを呼び出して、"プログラムによって追加された" すべてのメニュー項目を削除できます。
ストーリーボードで構成されているメニュー項目はクリアできません。