Xamarinで、お絵かきジェスチャーが変な動きをする(iOSのみ)
今回の事象
.NET Frameworkを3.1から3.2以上に上げたとき、線を引こうとすると、変に線が途切れました。
Simulatorと端末、どちらも同じ挙動でした。
その他、アプリでは画像の拡大縮小の際に指一本で画面内を移動する機能がありました。(重要)
原因
iOSのみ、GestureRecognizers.Clear()
が効かないため。
(バグだと思われる)
詳細
「線を引く動作」と、「画面内を移動する動作」を、GestureRecognizersを切り替えて運用しており、切り替えはGestureRecognizers.Clear()
を使っていました。
.NET Framework3.2以降はGestureRecognizers.Clear()
が効かないので、GestureRecognizersにはイベントが残ったままでした。
(デバッグモードで確認したところ、GestureRecognizersのCount=0なので、見せかけはClearされたように見える。不思議)
不幸なことに、どちらも指一本で動かす動作だったため、Clearされていない「画面内を移動する動作」が起こってしまい、今回の事象が起きました。
対処法
GestureRecognizers.Remove()
は効くようなので、Removeしたら直りました。
参考
https://forums.xamarin.com/discussion/170807/gesturerecognizers-clear-doesnt-work-for-ios
.NET Framework3.2から起こっていたのなら早く直してほしい…