ios – 当contentOffset设置为负值时,在tableview上无法识别触摸

ios – 当contentOffset设置为负值时,在tableview上无法识别触摸,第1张

概述我有一个表视图,我正在使用addSubview:将子视图直接添加到表视图中.我在CGRectMake位置显示此视图(0.0f,-30.0f,tableView.frame.size.width,30.0f)(因此,当用户滚动略微超出界限时,这将显示在表格的可滚动区域上方)滚动区域).然后我这样做: - (void) scrollViewDidScroll:(UIScrollView *)scrol 我有一个表视图,我正在使用addSubvIEw:将子视图直接添加到表视图中.我在CGRectMake位置显示此视图(0.0f,-30.0f,tableVIEw.frame.size.wIDth,30.0f)(因此,当用户滚动略微超出界限时,这将显示在表格的可滚动区域上方)滚动区域).然后我这样做:

- (voID) scrollVIEwDIDScroll:(UIScrollVIEw *)scrollVIEw {    if(scrollVIEw.contentInset.top + scrollVIEw.contentOffset.y < -30.0f) {        [scrollVIEw setContentOffset:CGPointMake(1.0f,-30.0f)-scrollVIEw.contentInset.top animated:NO];    }}

因此,当用户向上滚动并进入表视图中的负空间时,当它们释放时,它们仍然可以看到我在y = -30处插入的视图,以便表格不会“快照”回到0.

这一切都完全像我想要的那样.但是,当表的contentOffset设置为负y值时,例如[scrollVIEw setContentOffset:CGPointMake(1.0f,-30.0f)-scrollVIEw.contentInset.top animated:NO],则在我的两个单元格上都无法识别触摸表,也不是我直接插入表中的视图.我想知道如何将contentOffset设置为这样的值,并且仍然具有我的tableVIEw的子视图,以及单元格,注册触摸.

解决方法 向contentInset.top添加30.0f可能更容易,这样您就可以继续使用stock表视图.

如果您仍想使用您概述的方法,则需要在UItableVIEw子类中覆盖hitTest:withEvent:

- (UIVIEw *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {    if (CGRectContainsPoint(self.theVIEwInQuestion.frame,point)) {        return self.theVIEwInQuestion;    }    return [super hitTest:point withEvent:event];}

默认情况下,iOS视图不响应其边界之外的触摸,因此代码所做的是告诉事件处理系统您认为VIEwInQuestion在表内部,即使它位于原点之外且超出范围.

如果你想要更多细节,“Event handling for iOS – how hitTest:withEvent: and pointInside:withEvent: are related?”对于系统如何工作有一些很好的答案.

总结

以上是内存溢出为你收集整理的ios – 当contentOffset设置为负值时,在tableview上无法识别触摸全部内容,希望文章能够帮你解决ios – 当contentOffset设置为负值时,在tableview上无法识别触摸所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1025728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存