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

提供: MonoBook
2020年12月25日 (金) 01:32時点におけるAdministrator (トーク | 投稿記録)による版 (ページの作成:「 UIScrollViewから派生したカスタムビューを自作する際に、 なぜかSetZoomScale()やZoomToRect()などのメソッドが動かないときは、 だ…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動


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;
    }
}