2017-08-09 9 views
0

グリッド内に動的なコントロールが含まれ、各コントロールには独自のタップイベントが含まれています。列を追加または削除するには、このグリッドを挟む必要があります。 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メソッドは含まれていませんでした。上記のような問題は、ピンチがコントロールの上に発生したときに発火しないことです。私が知らないバグにぶつかっているのですか、それとも紛争を引き起こす何かをしましたか?

答えて

0

将来誰かがこの問題を抱えている場合、私たちがやり遂げたのは、グリッド上に別の視点を置き、ジェスチャーをプロキシすることでした。

関連する問題