从uiview转移到uitableview

时间:2015-02-04 03:58:54

标签: ios objective-c iphone uitableview uigesturerecognizer

我设置了这样的观点,

+- MyView : UIView --------------------+
| A                                    |
|   +- MyTableView : UITableView -----+|
|   |                                 ||
|   |  B                              ||
|   |                                 ||
|   +---------------------------------+|
+--------------------------------------+ 

我想达到以下两点。

  1. 最初,当用户开始滚动MyTableView时,我不想滚动MyTableView(图中的B),而是想在某个时刻移动MyView(图中的A)。

    < / LI>
  2. 达到某一点后,我想启动MyTableView滚动。此时表应该获得触摸事件,超级视图不应该。我希望在没有触摸的情况下实现这一点。

  3. 我能够通过遵循每个视图的子类代码来实现第一部分

    -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
    {
        if  ( _canReceiveTouches )
            return YES;
        return NO;
    }
    

    我启用/禁用 _canReceiveTouches 的地方,但我无法解除第二部分而没有解除触摸。我必须将触摸提升到表格视图获得下一个触摸事件。

    有人可以给我一些指导如何实现这个目标吗?提前谢谢。

1 个答案:

答案 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。