-uitable–
| –uivIEw- |
|| ||
|| ||
| ——— |
| |
| |
———–
该视图与tablevIEw具有相同的supervIEw,但部分涵盖了tablevIEw. UIVIEw上有几个按钮.我希望用户能够在视图上滚动并随后移动tablevIEw(就像他在桌面上滚动一样).但是,如果他点击视图上的按钮,我希望该点击在视图上注册,而不是发送到tablevIEw.现在,我正在覆盖视图的 – (BOol)pointInsIDe:(CGPoint)指向withEvent:(UIEvent *)事件方法总是返回NO,它适用于滚动但具有将所有触摸发送到tablevIEw的效果,渲染我的按钮无效.我有什么方法可以将滑动/平移手势传递到桌面视图,但保持轻敲手势?
谢谢,
解决方法 不要总是从pointInsIDe返回NO,而是检查点是否与任何UIbutton子视图相交 – 如果是,则返回YES.- (BOol) pointInsIDe:(CGPoint)point withEvent:(UIEvent *)event{ for ( UIVIEw* sv in self.subvIEws ) { if ( CGRectContainsPoint( sv.frame,point) ) return YES; } return NO;}
编辑:替代解决方案
根据您的评论,您希望用户通过其中一个子视图按钮开始滚动UItableVIEw.要完成这项工作,您需要使包含按钮的UIVIEw成为UItableVIEw的子视图.
通过这样做,UIVIEw将开始与UItableVIEwCells一起滚动.为了防止这种情况,您需要在滚动发生时调整框架,或者可能使用约束将其锁定到位.
- (voID) vIEwDIDLoad{ [super vIEwDIDLoad]; // instantiate your subvIEw containing buttons. mine is coming from a nib. UINib* n = [UINib nibWithNibname: @"TSVIEw" bundle: nil]; NSArray* obJs = [n instantiateWithOwner: nil options: nil]; _tsv = obJs.firstObject; // add it to the tablevIEw: [self.tableVIEw addSubvIEw: _tsv];}// this is a UIScrollVIEw delegate method - but UItableVIEw IS a UIScrollVIEw...- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)scrollVIEw{ [scrollVIEw bringSubvIEwToFront:_tsv]; CGRect fixedFrame = _tsv.frame; fixedFrame.origin.y = 100 + scrollVIEw.contentOffset.y; _tsv.frame = fixedFrame;}总结
以上是内存溢出为你收集整理的ios – UIVc在UIScrollview之上,只通过滚动而不是点击全部内容,希望文章能够帮你解决ios – UIVc在UIScrollview之上,只通过滚动而不是点击所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)