微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在内容页面的OnAppearing中使用ScrollView中的ScrollToAsync方法时出现问题

如何解决在内容页面的OnAppearing中使用ScrollView中的ScrollToAsync方法时出现问题

我在文件背后的代码中重写了OnAppearing()方法,以自动滚动到特定元素,该特定元素是XAML文件中ScrollView元素内的子元素。我使用ScrollView元素中的方法ScrollToAsync()滚动到MyBox元素,它是BoxView元素。

protected override async void OnAppearing()
{
    await horizontalscrollview.ScrollToAsync(MyBox,ScrollToPosition.Center,false);
    base.OnAppearing();
}

我的问题在于,当页面出现时,它不会自动滚动到MyBox元素。但是,如果我插入Task.Delay(),就可以使用它。

protected override async void OnAppearing()
{
    await System.Threading.Tasks.Task.Delay(1);
    await horizontalscrollview.ScrollToAsync(MyBox,false);
    base.OnAppearing();
}

我的问题是,为什么在插入延迟时起作用,并且有什么方法可以摆脱使用Task.Delay()语句的情况?

解决方法

您需要像下面这样在UIThread(主线程)中调用该行

protected override async void OnAppearing()
        {
            base.OnAppearing();

            Device.BeginInvokeOnMainThread(async ()=> {

                await HorizontalScrollView.ScrollToAsync(MyBox,ScrollToPosition.Center,false);

            });

        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。