Касания содержимого ScrollView в iOS

Download Sample Скачайте пример

Неявный таймер активируется при начале сенсорного жеста в iOS и ScrollView принимает решение на основе действия пользователя в ScrollView диапазоне таймера, следует ли обрабатывать жест или передавать его содержимому. По умолчанию iOS ScrollView задерживает касания содержимого, но это может вызвать проблемы в некоторых обстоятельствах с ScrollView содержимым, не выиграв жест, когда он должен. Таким образом, эта платформа определяет, обрабатывает ли ScrollView сенсорный жест или передает его содержимое. Он используется в XAML, задав ScrollView.ShouldDelayContentTouches присоединенное свойство значением boolean :

<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>

Кроме того, его можно использовать из C# с помощью api fluent:

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

scrollView.On<iOS>().SetShouldDelayContentTouches(false);

Метод ScrollView.On<iOS> указывает, что эта платформа будет работать только в iOS. Метод ScrollView.SetShouldDelayContentTouches в Xamarin.Forms.PlatformConfiguration.iOSSpecific пространстве имен используется для управления тем, обрабатывает ли ScrollView сенсорный жест или передает его содержимому. Кроме того, SetShouldDelayContentTouches метод можно использовать для переключения задержки касаний содержимого ShouldDelayContentTouches путем вызова метода, чтобы вернуть, задерживаются ли касания содержимого:

scrollView.On<iOS>().SetShouldDelayContentTouches(!scrollView.On<iOS>().ShouldDelayContentTouches());

Результатом является то, что ScrollView может отключить задержку получения касаний содержимогоFlyoutPage, чтобы в этом сценарии Slider жест получил жест, а не Detail страницу:

ScrollView Delay Content Touches Platform-Specific