ScrollView Content Touches w systemie iOS
Niejawny czasomierz jest wyzwalany po rozpoczęciu gestu dotykowego w ScrollView
systemie iOS, a ScrollView
decyzja zależy od akcji użytkownika w ramach przedziału czasomierza, niezależnie od tego, czy powinien obsługiwać gest, czy przekazywać go do jego zawartości. Domyślnie system iOS ScrollView
opóźnia dotknięcie zawartości, ale może to powodować problemy w niektórych okolicznościach z zawartością ScrollView
, która nie wygrywa gestu, gdy powinna. W związku z tym ta platforma określa, czy ScrollView
uchwyt gestu dotykowego, czy przekazuje go do jego zawartości. Jest on używany w języku XAML przez ustawienie dołączonej ScrollView.ShouldDelayContentTouches
boolean
właściwości na wartość:
<FlyoutPage ...
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
<FlyoutPage.Flyout>
<ContentPage Title="Menu" BackgroundColor="Blue" />
</FlyoutPage.Flyout>
<FlyoutPage.Detail>
<ContentPage>
<ScrollView x:Name="scrollView" ios:ScrollView.ShouldDelayContentTouches="false">
<StackLayout Margin="0,20">
<Slider />
<Button Text="Toggle ScrollView DelayContentTouches" Clicked="OnButtonClicked" />
</StackLayout>
</ScrollView>
</ContentPage>
</FlyoutPage.Detail>
</FlyoutPage>
Alternatywnie można go używać z poziomu języka C# przy użyciu płynnego interfejsu API:
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...
scrollView.On<iOS>().SetShouldDelayContentTouches(false);
Metoda ScrollView.On<iOS>
określa, że ta platforma będzie działać tylko w systemie iOS. Metoda ScrollView.SetShouldDelayContentTouches
w Xamarin.Forms.PlatformConfiguration.iOSSpecific
przestrzeni nazw służy do kontrolowania, czy ScrollView
uchwyt gestu dotykowego, czy przekazuje go do jego zawartości. Ponadto SetShouldDelayContentTouches
metoda może służyć do przełączania opóźniania dotykania zawartości przez wywołanie ShouldDelayContentTouches
metody w celu zwrócenia, czy dotknięcia zawartości są opóźnione:
scrollView.On<iOS>().SetShouldDelayContentTouches(!scrollView.On<iOS>().ShouldDelayContentTouches());
Wynikiem jest to, że ScrollView
element może wyłączyć opóźnienie odbierania dotknięcia zawartości, tak aby w tym scenariuszu Slider
gest odbierał gest, a nie Detail
stronę elementu FlyoutPage
: