メインメニューを開く

Xamarin.iOSのUIScrollView派生クラスでZoom系メソッドが動かないとき


UIScrollViewから派生したカスタムビューを自作する際に、 なぜかSetZoomScale()やZoomToRect()などのメソッドが動かないときは、 だいたいデリゲートの「明示的な設定」を忘れている。

[Register(nameof(ZoomImageView))]
public class ZoomImageView
    : UIScrollView
    , IUIScrollViewDelegate // ← これだけではダメ
{
    public ZoomImageView(IntPtr handle) : base(handle)
    {
        this.Setup();
    }

    public ZoomImageView(CGRect frame) : base(frame)
    {
        this.Setup();
    }

    public ZoomImageView(NSCoder coder) : base(coder)
    {
        this.Setup();
    }

    void Setup()
    {
        // これが重要。
        // 明示的にデリゲートを自分自身に設定する。
        this.Delegate = this;
    }
}