Xamarin.iOSのUIView派生クラスでGestureRecognizerが動かないとき

提供: MonoBook
ナビゲーションに移動 検索に移動

UIViewのUserInteractionEnabledプロパティをtrueにするとGestureRecognizerが動き出す。

class CustomView : UIView
{
    // GestureRecognizerはフィールド変数にしておいてUIView破棄時に
    // 明示的にDisposeしないとメモリリークする模様。
    UITapGestureRecognizer doubleTapGesture;

    void Setup() 
    {
        // GestureRecognizerを生成
        doubleTapGesture = new UITapGestureRecognizer( () => {
            Console.WriteLine("double tap");
        });

        // GestureRecognizerをダブルタップに設定
        doubleTapGesture.NumberOfTapsRequired = 2;

        // UIViewにGestureRecognizerを追加
        this.AddGestureRecognizer(doubleTapGesture);

        // これ重要
        // UIViewでGestureRecognizerを有効にする
        this.UserInteractionEnabled = true;
    }
}