2017-01-20 34 views
0

私のXamarinアプリケーションでは、状態に基づいて、Xamarinフォームビューにパン/ピンチジェスチャー認識機能を追加または削除する必要があります。ここにいくつかの疑似コードがあります:Xamarinビュー - ジェスチャー認識機能の再追加時のエラー

public void enableGestures(Xamarin.Forms.View v, bool isEnable) { 

    if (isEnable) { 
     pinchgr += OnViewPinched; 
     pangr += OnViewPanned; 
     v.GestureRecognizers.Add(pinchgr); 
     v.GestureRecognizers.Add(pangr); 
    }else { 
     pinchgr -= OnViewPinched; 
     pangr -= OnViewPanned; 
     v.GestureRecognizers.Remove(pinchgr); 
     v.GestureRecognizers.Remove(pangr); 
    } 
} 

ジェスチャー認識機能を追加するのは初めてです。後でそれらを取り除いても問題ありません。しかし、もう一度それらを追加しようとすると、無効な操作例外が発生します。「コレクションが変更されたため、列挙操作が実行されない可能性があります。

誰もがこの問題を克服する方法を知っているのだろうか。よろしく。

+0

擬似コードではなく、実際のコードを表示できますか?なぜあなたが「pinchgr + = OnViewPinched; pangr + = OnViewPanned;」をしているのかわからない"pinchgr - = OnViewPinched; pangr - = OnViewPanned;" – jgoldberger

+0

列挙された 'View'ループ内で' enableGestures'を呼び出せますか?すなわち、http://stackoverflow.com/a/605390/4984832これをどのようにしているのかの完全な文脈がなければ、答えはちょうど推測ですが、最終的には同じコレクションを列挙したり変更したりすることはできません。 – SushiHangover

答えて

1

ループ内から列挙可能なコレクションを変更しているようです。

IEnumerableをループする代わりに、.ToList()または.ToArray()のバージョンをループします。

+0

ありがとうございました。私は列挙をしていませんでしたが、あなたは正しい方向にいたと思います。 Xamarinは新しい認識装置を追加している間にすべての認識装置を列挙しなければなりません。したがって、問題です。 – Peter

関連する問題