1

左右のページングに使用するボタンを備えた UIScrollview があります。

@IBAction func leftPressed(sender: AnyObject) {

    self.scrollView!.setContentOffset(CGPointMake(0, 0), animated: true)
} 

scrollview がページング アニメーションを終了した後にアクションを実行したいと思います。何かのようなもの:

@IBAction func leftPressed(sender: AnyObject) {

    self.scrollView!.setContentOffset(CGPointMake(0, 0), animated: true)

    secondFunction()
}

スクロールビューがオフセットのアニメーション化を完了する前に 2 番目の関数が実行されるため、上記のコードは機能しません。私の最初の反応は、完了ハンドラーを使用することでしたが、setContentOffset 関数に適用する方法がわかりません。私はもう試した:

func animatePaging(completion: () -> Void) {

    self.mainScrollView!.setContentOffset(CGPointMake(0, 0), animated: true)

    completion()
}

呼び出しで

animatePaging(completion: self.secondFunction())

しかし、「タイプ '(completion())' の引数リストで 'animatePaging' を呼び出すことはできません」というエラーが表示されます。何か考えはありますか?

4

2 に答える 2

4

問題は、スクロール アニメーション自体の完了ハンドラーが必要なことです。ただしsetContentOffset(_:animated:)、完了ハンドラはありません。

UIView1 つの解決策は、 's static 関数を使用して自分でスクロールをアニメーション化することですanimateWithDuration(_:animations:completion:)。その関数には、使用できる完了ハンドラーがあります。

UIView.animateWithDuration(0.5, animations: { () -> Void in
        self.scrollView.contentOffset = CGPointMake(0, 0)
    }) { (finished) -> Void in
        self.secondFunction()
    }
于 2015-10-29T21:43:25.963 に答える