.NET MAUI - 是否可以在重叠控件上启用单击事件

问题描述 投票:0回答:1

我有一个非常具体的场景。这是我的代码简化:

<Grid RowDefinitions="Auto" Columns="*,*">
    <custom:MyCustomView Grid.Column="0" Grid.ColumnSpan="2"/>
    <Button Grid.Column="0"  
        BackgroundColor="Transparent"
        HorizontalOptions="Start">
</Grid>

我在网格中有两个控件。 MyCustomView 控件内部有一组可单击元素和一个按钮,该按钮需要覆盖该视图的一半并与其重叠。这个想法是,如果用户单击 MyCustomView 上的可点击元素(按钮),则应执行专用命令,但如果用户长按,则应执行大按钮操作。我尝试了所有InputTransparent 和ZIndex 但没有任何运气。这有可能在毛伊岛制作吗?

c# .net maui
1个回答
0
投票

您的自定义视图类型是ContentView吗?如果没有,您可以将其类型更改为 ContentView,然后 CustomView 的 LongPressCommand子视图的单击事件 都将起作用。

另外,如果你不想改变的话。您可以使用平台视图的长按事件而不是

LongPressCommand
。如:

<Grid RowDefinitions="Auto" Columns="*,*">
    <custom:MyCustomView x:Name="customview" Grid.Column="0" Grid.ColumnSpan="2"/>
    <Button Grid.Column="0"  
        BackgroundColor="Transparent"
        HorizontalOptions="Start">
</Grid>

在后面的代码中:

protected override void OnHandlerChanged()
    {
        base.OnHandlerChanged();
#if ANDROID
        var view = layout.Handler.PlatformView as Android.Views.View;
        view.LongClick += (s, e) =>
        {
            // do something
        };
#elif IOS
       var view = this.layout.Handler.PlatformView as UIKit.UIView;
       view.UserInteractionEnabled = true;
       view.AddGestureRecognizer(new UIKit.UILongPressGestureRecognizer(HandleLongClick));
#endif
    }
   #if IOS
    private void HandleLongClick(UIKit.UILongPressGestureRecognizer sender)      
    {          
       //do something      
    }
#endif

当然,你可以将它们放入MyCustomView.cs以避免每次都编码。

© www.soinside.com 2019 - 2024. All rights reserved.