ios – 在UITableView上移动UIView – 触摸顶部UIView仍然选择表行

前端之家收集整理的这篇文章主要介绍了ios – 在UITableView上移动UIView – 触摸顶部UIView仍然选择表行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含三个容器的UIView
Container A - contains a UITableView
Container B - contains Container C and Container O
Container C - contains a UITableView
* - touch event
@ - touch event

----------------------
|     |               |
| ---*|      B        |
| --- |               |
| -A- | -----------   |
| --- ||@----C---- |  |
|     | -----------   |
----------------------

一个事件发生在我移动容器B的框架(我在B的右边显示一个视图(标记为O),这并不重要).现在容器B与容器A重叠

O - Other view (unimportant)
$- original location of touch @

----------------------
|   |               | | 
| --|*     B        | |
| --|               | |
| -A|------------   |O|
| --||@-$--C----|   | |
|   |------------   | |
----------------------

但现在,当我尝试通过触摸行的左边缘(@)在Container C的UITableView中选择一行时,Container A的UITableView正在注册触摸.或者即使我触摸表格(*)上方的视图,也会选择A中的相应行.

我可以通过改变容器A的UITableView的宽度来解决部分问题.但是我仍然有问题,如果我触摸表C(@),C的行不选择.这就像表C的起点位于旧位置($).

那么我该怎么办才能点击新的@位置将选择C中的正确行?

=======

用一些代码编辑:

这是我在容器B中所做的代码.这是B帧的一个非常直接的动画. self.view是Container B的UIView.

所有视图都在屏幕上(隐藏“其他”容器)通过故事板.其他容器是B的子视图.

// this code basically aligns the "other" container to the right/"offscreen" of 
// Container B. Yes extending beyond the frame of B,but this part works fine
CGRect otherContainerFrame = self.otherContainerView.frame;
otherContainerFrame.origin.x = CGRectGetMaxX(self.view.frame);
[self.otherContainerView setFrame:otherContainerFrame];
[self.otherContainerView setHidden:NO];

// I'm going move Container B by the width of the "other" view
float offset = CGRectGetWidth(self.otherContainerView.frame);

CGRect frame = self.view.frame;
frame.origin.x -= offset;
[UIView animateWithDuration:.35
                 animations:^{
                     [self.view setFrame:frame];
                 }
];

请让我知道你想看到的其他代码.

解决方法

嗯……不确定这是否适用于您的情况,但尝试在容纳所有其他容器的更大容器中管理您的动画.

我的意思是,创建一个包含A,B,O及其子视图的Container Z,并尝试从Z中设置B的位置动画,检查B是否在A前面.

猜你在找的iOS相关文章