如何解决如何检测哪个 UICollectionView 滚动?
我在一个控制器中有多个 collectionView。其中一个在顶部,第二个在底部。所以我的问题是如何检测滚动的 collectionView 视图?(在 Objective-c 中)要检测滚动,我使用以下方法: - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 。但是在这种方法中,我无法检测滚动的是哪个 collectionView。请帮助您提供建议。
解决方法
在 Swift 中,您可以这样检查:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if scrollView == topCollectionViewName {
print("Call Top CollectionView")
}else if scrollView == bottomCollectionViewName{
print("Call Bottom CollectionView")
}else{
print("call any other")
}
}
在Objective C中,您可以这样检查:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (scrollView == topCollectionViewName) {
NSLog(@"Call Top CollectionView");
}else if (scrollView == bottomCollectionViewName) {
NSLog(@"Call Bottom CollectionView");
}else{
NSLog(@"Call any other");
}
}
很高兴为您服务:)
,UICollectionView 是 UIScrollView 的子类,所以你可以比较它
https://developer.apple.com/documentation/uikit/uicollectionview
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (scrollView == collectionViewOne) {
}else if (scrollView == collectionViewTwo) {
}else{
//something else
}
}
,
创建您的 collectionView 的出口。
@IBOutlet weak var topCollectionView: UICollectionView!
@IBOutlet weak var bottomCollectionView: UICollectionView!
在scrollView委托方法中:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (scrollView == topCollectionView) {
}
else if (scrollView == bottomCollectionView) {
}
}
这将起作用,因为 UICollectionView 是 UIScrollView 的子类。
,// create outlets of both collectionview
@IBOutlet weak var collectionViewA: UICollectionView!
@IBOutlet weak var collectionVieB: UICollectionView!
// add delegate method to detect scroll of collectionview
// for swift
func collectionView(_ collectionView: UICollectionView,willDisplay cell: UICollectionViewCell,forItemAt indexPath: IndexPath) {
if collectionView == collectionViewA{
// collectionviewA was scrolled
}else{
// collectionviewB was scrolled
}
}
// same deleagte for objc
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {
// compare both collectionview here like upper swift method
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。