如果collectionView低于某些uiview,iOS如何使collectionView接收触摸
Posted
技术标签:
【中文标题】如果collectionView低于某些uiview,iOS如何使collectionView接收触摸【英文标题】:iOS how to make collectionView receive touches if it's below some uiview 【发布时间】:2015-09-22 02:41:19 【问题描述】:我问一些不同的场景:
ios How to make UIButton below UICollectionView receive touch?
但我也想知道是否可以在没有透明背景颜色的情况下将 collectionView 对齐到 uiview 下面并接收触摸?
然后我想在蓝色视图触发 collectionView 滚动行为时移动手指,并且我还想 UIButton 接收触摸。
命中测试不是解决方案。
为什么?
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
if ([self pointInside:point withEvent:event])
for (UIView *subview in [self.subviews reverseObjectEnumerator])
CGPoint convertedPoint = [subview convertPoint:point fromView:self];
UIView *hitTestView = [subview hitTest:convertedPoint withEvent:event];
if (hitTestView)
return hitTestView;
return self;
return nil;
只是因为手指在蓝色视图时它没有被触发。
【问题讨论】:
【参考方案1】:您可以使用 userInteractionEnabled=YES 子类化 UIView(蓝色),然后使用 hitTest
:
-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event
id hitView = [super hitTest:point withEvent:event];
if (hitView == self) return nil; // <--- pass-through if touch on UIView (blue view)
else return hitView; // touch on children (UIButton)
【讨论】:
对不起,但这不是我的解决方案。因为蓝色视图它只是一个容器。例如,其中将包括一个 ImageView 甚至是 collectionView(用于滚动照片)。以上是关于如果collectionView低于某些uiview,iOS如何使collectionView接收触摸的主要内容,如果未能解决你的问题,请参考以下文章