iOS での VisualElement の最初のレスポンダー

この iOS プラットフォーム固有設定を使うと、要素を含むページではなく、VisualElement オブジェクトをタッチ イベントの最初のレスポンダーにすることができます。 この機能を XAML で使用するには、バインド可能なプロパティ VisualElement.CanBecomeFirstRespondertrue に設定します。

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        <Entry Placeholder="Enter text" />
        <Button ios:VisualElement.CanBecomeFirstResponder="True"
                Text="OK" />
    </StackLayout>
</ContentPage>

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

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

Entry entry = new Entry { Placeholder = "Enter text" };
Button button = new Button { Text = "OK" };
button.On<iOS>().SetCanBecomeFirstResponder(true);

VisualElement.On<iOS> メソッドは、このプラットフォーム固有が iOS でのみ実行されるように指定します。 タッチ イベントの最初のレスポンダーになるように VisualElement を設定するには、Xamarin.Forms.PlatformConfiguration.iOSSpecific 名前空間の VisualElement.SetCanBecomeFirstResponder メソッドを使います。 さらに、VisualElement.CanBecomeFirstResponder メソッドを使うと、VisualElement がタッチ イベントの最初のレスポンダーかどうかを取得できます。

結果では、要素を含むページではなく、VisualElement がタッチ イベントの最初のレスポンダーになれることが示されます。 これにより、チャット アプリケーションで Button がタップされたときにキーボードを閉じないようにする、といったシナリオが可能になります。