Ren*_*ené 9 objective-c uiscrollview ios
我有一个有两个子视图的视图:
滚动视图位于子视图A的顶部,并具有完整的设备宽度/高度.我希望用户能够通过透明区域与滚动视图下方的所有按钮和手势重新配置器进行交互,同时仍然能够滚动(因此传递最小的测试结果).
看起来像一个足够简单的任务,但我无法让它工作.滚动视图始终阻止所有触摸.
知道如何实现这一目标吗?谢谢!
tan*_*one 12
您应该继承UIScrollView并覆盖以下方法:
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
Run Code Online (Sandbox Code Playgroud)
如果此方法返回NO,则对于触摸事件,scrollview将是"透明的".
如果您希望滚动视图对于触摸事件是"透明的",仅当触摸位于滚动视图的透明区域时,您的实现应如下所示:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
return ![self isPointInsideATransparentRegion:point]; //you need to implement isPointInsideATransparentRegion to check whether the point touched is in a transparent region or not
}
Run Code Online (Sandbox Code Playgroud)
我现在通过将应该位于滚动视图下方的视图添加到滚动视图作为第一个子视图,并在scrollViewDidScroll中移动其位置,在某种程度上解决了这个问题:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
[self updateBottomViewPosition];
}
- (void)updateBottomViewPosition {
CGPoint contentOffset = _mainScrollView.contentOffset;
CGFloat y = MAX(contentOffset.y, 0);
CGRect frame = _bottomPage.frame;
if (y != frame.origin.y) {
frame.origin.y = y;
_leadPage.frame = frame;
}
}
Run Code Online (Sandbox Code Playgroud)
这可行,但可能不太优雅。
| 归档时间: |
|
| 查看次数: |
4805 次 |
| 最近记录: |