グリッド内に動的なコントロールが含まれ、各コントロールには独自のタップイベントが含まれています。列を追加または削除するには、このグリッドを挟む必要があります。 iOSでは、これは完全にうまく動作します。しかし、Androidでは、ピンチジェスチャーは、コントロールがない画面の領域で行われた場合にのみ機能します。私が何らかのコントロールを挟み込もうとすると、何も起こりません。私はいくつかのデバッギングステートメントを追加しましたが、ピンチイベントは起動されていません。あたかもコントロールが指を呑み込んでピンチを発射させないように見える。関連するコードは以下に掲載されています(xxxxはコードの一部を編集する場所です)。Xamarinフォームのピンチジェスチャーは、別のコントロール上に配置されているとAndroidで機能しません。
XAML:
<ContentPage x:Class="xxxxx"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<Grid RowSpacing="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<xxxxxx x:Name="xxxxx" Grid.Row="0" />
<ScrollView Grid.Row="1">
<Grid x:Name="ContentGrid"
ColumnSpacing="4"
RowSpacing="4"/>
</ScrollView>
</Grid>
</ContentPage>
コンストラクタ:グリッド内
private PinchGestureRecognizer pinch;
public xxxxx()
{
InitializeComponent();
pinch = new PinchGestureRecognizer();
pinch.PinchUpdated += Zoom;
ContentGrid.GestureRecognizers.Add(pinch);
}
充填(Iのみ関連する部分にこれを削減しなければならなかった):
var tapGesture = new TapGestureRecognizer();
tapGesture.Tapped += OnCtrlTapped;
ctrl.GestureRecognizers.Add(tapGesture);
ContentGrid.Children.Add(ctrl, colIndex, rowIndex);
I起動時に正しく動作するため、Zoomメソッドは含まれていませんでした。上記のような問題は、ピンチがコントロールの上に発生したときに発火しないことです。私が知らないバグにぶつかっているのですか、それとも紛争を引き起こす何かをしましたか?