iOS での TimePicker 項目の選択

この iOS プラットフォーム固有設定では、TimePicker で項目の選択が行われるタイミングが制御されます。これにより、ユーザーは、コントロール内の項目を参照するとき、または [完了] ボタンが押された後にのみ、項目を選択することを指定できます。 TimePicker.UpdateMode 添付プロパティを UpdateMode 列挙型の値に設定することで、XAML で使用されます。

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
       <TimePicker Time="14:00:00"
                   ios:TimePicker.UpdateMode="WhenFinished" />
       ...
    </StackLayout>
</ContentPage>

あるいは、Fluent API を使用して C# から使用することもできます。

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

timePicker.On<iOS>().SetUpdateMode(UpdateMode.WhenFinished);

TimePicker.On<iOS> メソッドは、このプラットフォーム固有が iOS でのみ実行されるように指定します。 Xamarin.Forms.PlatformConfiguration.iOSSpecific 名前空間の TimePicker.SetUpdateMode メソッドは、項目の選択が行われるタイミングを制御するために使用され、UpdateMode 列挙は 2 つの可能な値を提供します。

  • Immediately: ユーザーが TimePicker で項目を参照すると、項目の選択が行われます。 これは、Xamarin.Forms の既定の動作です。
  • WhenFinished: 項目の選択は、ユーザーが TimePicker[完了] ボタンを押した後にのみ行われます。

さらに、SetUpdateMode メソッドを使用して、UpdateMode メソッドを呼び出して列挙値を切り替えることができます。このメソッドは現在の UpdateMode を返します。

switch (timePicker.On<iOS>().UpdateMode())
{
    case UpdateMode.Immediately:
        timePicker.On<iOS>().SetUpdateMode(UpdateMode.WhenFinished);
        break;
    case UpdateMode.WhenFinished:
        timePicker.On<iOS>().SetUpdateMode(UpdateMode.Immediately);
        break;
}

その結果、指定された UpdateModeTimePicker に適用され、項目の選択がいつ行われるかを制御します。

TimePicker の更新モードのスクリーンショット