あなたは目に見えるindexpathを使用したい場合アクション
public func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if (!decelerate) {
//cause by user
print("SCROLL scrollViewDidEndDragging")
}
}
public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
//caused by user
print("SCROLL scrollViewDidEndDecelerating")
}
スクロールがコードアクションによって(プログラムによって)発生した場合:(「scrollRectToVisible」や「scrollT」など) oItemAtIndexPath ")
public func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
//caused by code
print("SCROLL scrollViewDidEndScrollingAnimation")
}
注:
- あなたUIScrollViewDelegateやUICollectionViewDelegateデリゲートでこれらの関数を入れてください。あなたが別のデリゲートを持っていない場合
- 、あなたの現在のクラスがあなたのクラスファイル
のUIScrollViewDelegateオペアンプトップを拡張します。
open class MyClass: NSObject , UICollectionViewDelegate
とどこかにあなたのviewWillAppear内のクラス独自のデリゲート
override open func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// ...
self.myScrollView.delegate = self
// ...
}
はブリリアント作ります。これでどれくらい厄介なコードが私を救ったのか分かりません。私は私のUICollectionViewFlowLayoutのshouldInvalidateLayoutForBoundsChangeコールバックを使用してそれを監視しようとしていました。どのようなn00b。 –
scrollViewDidEndScrollingAnimationについては、下記のD6miの注を参照してください。 scrollViewDidEndDeceleratingは、プログラムによるスクロールのために呼び出されません。 – RajV
実際、現在の回答が受け入れられた理由は分かりません。それは動作しません。scrollViewDidEndDeceleratingは呼び出されませんが、D6miのように、scrollViewDidEndScrollingAnimationが呼び出されました。 – AkademiksQc