2017年1月23日月曜日

ScrollView上の部品でtouchesイベントを有効にする

ScrollView上に配置した部品はtouchesBeganとかのイベントが無効になってしまう。

やり方は意外と簡単で、以下のようにUIScrollViewを継承したクラスを作り、それを使えばいいのだ。
中にはtouchesBegan( )をoverrideし、superviewに渡すメソッドを書く。
(必要に応じてtouchesMove( )とかのメソッドも書く)

//ScrollViewtouchイベントを取得できるようにするため、overrideしたクラスを作る
class TouchableScrollView: UIScrollView
{
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        superview?.touchesBegan(touches, with: event)
    }

}

StoryboardでScrollViewを配置してるなら、そのCustomClassにこのTouchableScrollViewを指定する。
コードで配置してるならこれのインスタンスを使えばいい。

0 件のコメント:

コメントを投稿