Xamarin表单显示了奇怪的行为

时间:2018-11-20 14:53:43

标签: xamarin xamarin.forms xamarin.ios xamarin.android

根据TLScrollView,我有一个自定义的ScrollView。

现在,当我向其中添加一些数据时,出现了一种奇怪的现象,我最近发现屏幕区域的一部分不可单击,而其余部分可以正常工作。

现在,相同的代码在Android上的工作方式像个超级按钮,但iOS却显示出这种奇怪的行为,

Xaml:

  <controls:TLScrollView Orientation="Horizontal" BackgroundColor="White"
          x:Name="ListAddons" ItemsSource="{Binding ListAddons}" AbsoluteLayout.LayoutFlags = "All"
            AbsoluteLayout.LayoutBounds = "0.5, 0.5, 1.0, 1.0">

                <controls:TLScrollView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout BackgroundColor="Transparent" Margin = "0, 5, 0, 0">
                                <Grid BackgroundColor="White" InputTransparent="true"  RowSpacing = "0" ColumnSpacing = "0">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="0.5*" />
                                        <RowDefinition Height="45.0*" />
                                        <RowDefinition Height="45*" />
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="100" />
                                        <ColumnDefinition Width="1" />
                                    </Grid.ColumnDefinitions>
                                    <ffimageloading:CachedImage Source="{Binding Icon, Converter={StaticResource Base64ToImageConverter}}"
                   ErrorPlaceholder = "nopreviewlandscape" LoadingPlaceholder = "loadingicon"
                              Grid.Row="1" Grid.Column="0" HorizontalOptions="Center"
                              VerticalOptions="Center" Aspect="AspectFill" />
                                    <Label x:Name="lblRecommendationsName"  Margin="0" Text="{Binding CategoryName}"
                                  LineBreakMode="WordWrap" XAlign="Center" TextColor="{StaticResource gray_text_color}"
                                  VerticalOptions="Center" HorizontalOptions="Center" Grid.Row="2"
                                  Grid.Column="0" Style="{StaticResource RecommendationName}">
                                        <Label.FontFamily>
                                            <OnPlatform x:TypeArguments="x:String">
                                                <On Platform="iOS" Value="OpenSans-Light" />
                                                <On Platform="Android" Value="OpenSans-Light" />
                                            </OnPlatform>
                                        </Label.FontFamily>
                                        <Label.TextColor>
                                            <OnPlatform x:TypeArguments="Color">
                                                <On Platform="Android" Value="#000000"></On>
                                            </OnPlatform>
                                        </Label.TextColor>
                                    </Label>

                                    <BoxView WidthRequest="0" Grid.Row="1" Grid.Column="1"
                                  BackgroundColor="{StaticResource separator_color}"
                                      Grid.RowSpan="4" Style="{StaticResource BoxViewHomeStyle}">
                                    </BoxView>

                                </Grid>
                                <StackLayout.GestureRecognizers>
                                    <TapGestureRecognizer Command="{Binding Path=BindingContext.AddonsClickCommand,Source={x:Reference ListAddons}}"
                                      CommandParameter="{Binding CategoryId}"
                                  />
                                </StackLayout.GestureRecognizers>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </controls:TLScrollView.ItemTemplate>
            </controls:TLScrollView>

首先,我认为其中可能存在某种重叠,这可能会导致这种情况,但是后来我意识到,相同的代码在Android设备上起作用,并在iOS上引起这种情况。

无法点击的图像部分在黑框内,其他所有点击事件都可以正常运行。 Unclickable image

2 个答案:

答案 0 :(得分:0)

可能与此问题无关,但我认为BoxView的“ Grid.RowSpan”可能会导致问题。

网格仅具有三行(0-2行)定义,但指定BoxView合并1至4行。

                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="0.5*" />
                                        <RowDefinition Height="45.0*" />
                                        <RowDefinition Height="45*" />
                                    </Grid.RowDefinitions>
<BoxView WidthRequest="0" Grid.Row="1" Grid.Column="1"
                                  BackgroundColor="{StaticResource separator_color}"
                                      Grid.RowSpan="4" Style="{StaticResource BoxViewHomeStyle}">
                                    </BoxView>

答案 1 :(得分:0)

好吧,我不确定是什么原因引起的,但是更新到最新版本的Xamarin。Forms修复了该错误!

我更新到Xamarin.Forms版本4.5.0.396

如果遇到类似的问题,请随时回来。