我设置了这样的观点,
+- MyView : UIView --------------------+
| A |
| +- MyTableView : UITableView -----+|
| | ||
| | B ||
| | ||
| +---------------------------------+|
+--------------------------------------+
我想达到以下两点。
最初,当用户开始滚动MyTableView时,我不想滚动MyTableView(图中的B),而是想在某个时刻移动MyView(图中的A)。
< / LI>达到某一点后,我想启动MyTableView滚动。此时表应该获得触摸事件,超级视图不应该。我希望在没有触摸的情况下实现这一点。
我能够通过遵循每个视图的子类代码来实现第一部分
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
if ( _canReceiveTouches )
return YES;
return NO;
}
我启用/禁用 _canReceiveTouches 的地方,但我无法解除第二部分而没有解除触摸。我必须将触摸提升到表格视图获得下一个触摸事件。
有人可以给我一些指导如何实现这个目标吗?提前谢谢。
答案 0 :(得分:0)
实施touchesMoved:WithEvent:
在方法内部,使用以下方法获取触摸的位置(CGPoint):
CGPoint touchLocation = [touches anyObject] locationInView:self.view];
然后与tableview&#34; top&#34;进行比较。 y(又名origin.y)。你可以使用:
CGFloat tableViewOriginY = CGRectGetMinY(self.tableview.frame);
有一个条件语句检查&#34; touchLocation.y&#34;高于或等于&#34; tableViewOriginY&#34;,然后您已达到所需的点,您可以滚动您的tableview。