maui - 在 iOS 和 MacCatalyst 中无法单击 MAUI 底部附近的按钮

标签 maui

我的 MAUI 应用程序中有一个 ContentPage。此页面有一个标签和条目列表,最后有 2 个按钮:

<ScrollView>
    <VerticalStackLayout>
        <Picker ItemsSource="{Binding WordTypes}"
                SelectedItem="{Binding WordTypeText}" />

        <Label Text="label_x" />
        <Entry Text="{Binding entry_x}" />

        <StackLayout IsVisible="false">
            <StackLayout.Triggers>
                <!-- Spanish -->
                <MultiTrigger TargetType="StackLayout">
                    <MultiTrigger.Conditions>
                        <BindingCondition Binding="{Binding WordTypeText}" 
                                          Value="Verb" />
                    </MultiTrigger.Conditions>
                    <Setter Property="IsVisible" Value="true" />
                </MultiTrigger>
            </StackLayout.Triggers>
    
            <!-- More labels and entries -->
        </StackLayout>

        <!-- More labels and entries -->

        <Button Text="Cancel"
                Clicked="buttonCancel_Clicked" />
        <Button Text="Save"
                Clicked="buttonSave_Clicked" />
    </VerticalStackLayout>
</ScrollView>

WordTypes 有 2 个值:动词名词。当 WordTypeText 具有值 Verb 时,我想显示更多标签和条目。

该应用程序可在每个平台上运行。

仅在 iOS 和 MacCatalyst 中存在一个有趣的行为。如果我必须滚动 ContentPage 才能单击保存按钮,应用程序不会触发函数 buttonSave_Clicked。如果在 MacCatalyst 中我调整窗口大小,则可以单击该按钮并按我的预期工作。

视觉示例。在 MacCatalyst 中,我有这个窗口,如果我单击“保存”按钮,它就不起作用。

enter image description here

如果我调整窗口大小(只有几个像素),它就可以工作。

enter image description here

还有其他人遇到过这个问题吗?如何针对 iOS 和 MacCatalyst 修复此问题?

更新

我阅读了 GitHub 上的建议帖子我尝试遵循他们所说的有效方法。

我尝试在页面的构造函数中添加此代码

MyVerticalStackLayout.SizeChanged += (object sender, EventArgs e) =>
{
    (MyScrollView as IView).InvalidateMeasure();
} 

但它现在可以工作了。另一种解决方法是在页面底部添加一个框,例如

<BoxView BackgroundColor="Transparent" HeightRequest="200" />

结果是...

enter image description here

如您所见,Transparent BackgroundColor 正在工作,但我仍然无法单击该按钮。

我在 NET8 中看到此问题已修复,但无法将 NET8 与 Visual Studio for Mac 一起使用,对于 Windows,我必须安装 Visual Studio 的预发行版。

最佳答案

直到向后移植到 .Net 7:

  • 作为临时解决方法,请将按钮移到 ScrollView 之外。

  • 在其他情况下,调用 myScrollView.InvalidateMeasure(); (或者可能 myPage.InvalidateMeasure(); - 从第二个链接问题中的评论中不清楚.)有时会修复。例如。当scrollview滚动时触发的事件,调用它。

关于maui - 在 iOS 和 MacCatalyst 中无法单击 MAUI 底部附近的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76828954/

相关文章:

c# - .NET Maui MVVM Picker 绑定(bind) SelectedIndexChanged 事件

c# - .Net Maui - 如何返回根页面

c# - .Net MAUI - LiveCharts - LineSeries 中的自定义点颜色

css - 如何更改 .NET MAUI Blazor 元素中的默认字体?

navigation - 如何在 OnAppearing() 方法中导航?

c# - 如何将变量数据传递到 .NET MAUI GraphicsView Canvas 中

android - 使用处理程序在 Android MAUI 上设置开关的 TrackColor,切换开关时不会保持设置状态

xamarin - 如何使用 Xamarin 表单(MAUI)中的 dll/nuget 从核心项目访问 MaterialIconsFont.ttf?

maui - 从 .NET MAUI 应用程序中的堆栈中删除导航页面