我已经根据这种技术实现了一个分页滚动(iOS开发.如何扩展UIScrollView的滚动事件响应区域?)并且它按预期工作.
我正在滚动的视图包含几个按钮,我希望不仅能够点击滚动视图中心/分页的视图,还能够点击它们左侧和右侧的视图.我找不到任何方法来解决这个问题,但我还不是真正的iOS-Jedi,希望你们其中一个人虽然:)

因此,从屏幕上可以看出,UIScrollView大约是窗口宽度的三分之一,UIScrollView的内容大得多:大约1500px并且包含许多以编程方式添加的按钮.这个解决方案很酷,实际工作的部分是按钮:1)被分页到滚动视图2)在滚动视图外可见(因为滚动视图未选中"剪辑子视图")3)按钮是在uiscrollview中可见时可单击.
但是不起作用的只是这样: - 当前在窗口外的按钮在点击它们时不会收到"他们的"点击,而是将事件转发到底层(窗口的白色部分)视图.
tom*_*mys 15
所以,
我终于设法解决了这个难题,解决方案分为两部分.问题是,正如您所记得的那样,点击事件没有传递到UIScrollView外部(可见)的按钮.事实证明,点击是由底层视图捕获的,并且可以通过弯曲关于谁被击中的规则来操纵他们找到目标的方式,从而欺骗事件通过你想要的地方.不确定这是不是应该怎么做但它解决了我的问题.. :)
1)第一个必须在底部视图中覆盖以下方法,以便在适当时返回scrollview而不是自身.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *view = [super hitTest:point withEvent:event];
if (view == self)
return [self scrollView];
return view;
}
Run Code Online (Sandbox Code Playgroud)
2)scrollView必须覆盖两个方法,将点击移交给其包含的对象.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *view = [super hitTest:point withEvent:event];
// Always return us.
return view ;
}
Run Code Online (Sandbox Code Playgroud)
和
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
// We want EVERYTHING!
return YES;
}
Run Code Online (Sandbox Code Playgroud)
非常感谢您的评论和愿意提供帮助.我好
| 归档时间: |
|
| 查看次数: |
3748 次 |
| 最近记录: |