다음을 통해 공유


iOS에서 ScrollView 콘텐츠 터치

암시적 타이머는 iOS에서 ScrollView 터치 제스처가 시작되고 ScrollView 타이머 범위 내의 사용자 동작에 따라 제스처를 처리할지 아니면 콘텐츠에 전달해야 하는지를 결정할 때 트리거됩니다. 기본적으로 iOS ScrollView 는 콘텐츠 터치를 지연하지만, 이로 인해 콘텐츠가 제스처를 이기지 못하는 상황에서 ScrollView 문제가 발생할 수 있습니다. 따라서 이 .NET 다중 플랫폼 앱 UI(.NET MAUI) 플랫폼별 컨트롤은 터치 제스처를 처리할지 아니면 콘텐츠에 전달하는지 여부를 ScrollView 제어합니다. 연결된 속성을 boolean 값으로 설정 ScrollView.ShouldDelayContentTouches 하여 XAML에서 사용합니다.

<FlyoutPage ...
            xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls">
    <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>

또는 흐름 API를 사용하여 C#에서 사용할 수 있습니다.

using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
...

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

이 메서드는 ScrollView.On<iOS> 이 플랫폼별이 iOS에서만 실행되도록 지정합니다. ScrollView.SetShouldDelayContentTouches 네임스페이 Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific 스의 메서드는 터치 제스처를 처리할지 아니면 콘텐츠에 전달하는지 여부를 ScrollView 제어하는 데 사용됩니다. 또한 메서드를 SetShouldDelayContentTouches 사용하여 콘텐츠 터치 지연 여부를 반환하도록 메서드를 호출 ShouldDelayContentTouches 하여 지연 콘텐츠 터치를 전환할 수 있습니다.

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

그 결과 ScrollView 콘텐츠 터치 수신 지연을 사용하지 않도록 설정할 수 있으므로 이 시나리오 Slider 에서는 다음 페이지FlyoutPage가 아닌 제스처를 Detail 받습니다.

ScrollView Delay Content Touches Platform-Specific.