0

我的屏幕有一些这样的视图

__________________
|          _____  |
|          |    | | //viewX is a video screen
|          |    | | 
| viewX    | vY | | //viewY is a custom uiview i created.
|          |____| | //it contains a method which i would like to call that toggles
|_________________| //the hidden property of this view. and when it hides, a little
|                 | //button is replaced no the top right corner on top of viewX
| viewZ           | //the video layer
|                 |
|_________________| //viewZ is a view containing many square views - thumbnails.

我的问题是,我不知道如何注册触摸事件,以便无论用户触摸屏幕的哪个视图都可以识别任何触摸事件。atm im 处理其中每个视图的触摸事件。所以一切都很好......

但是我想要做的是,当用户点击屏幕上的任何其他位置但在 viewY 上时,viewY 应该通过在 viewY 类中调用该方法来消失。

此 viewY 类已实例化,并且没有附加任何 xib 文件。uiview 是在 viewY 类中以编程方式创建的。viewY 行为的整个类在 viewX - 视频视图中实例化。

我的老板说添加代表......虽然我现在知道如何做到这一点......有什么帮助吗?

无论如何我可以让它变得非常简单并且无论我从哪个班级打电话都可以说 REMOVE VIEW 吗?

我还看到其他人通过使用这些时髦的箭头-> ... <- 等来实现这一点。虽然我不确定这是否是我需要的或如何实现这样的事情。

啊,我想我让我的问题变得相当复杂,但我的意思是它是一个简单的问题,并且知道它可以通过简单的方式完成!

4

2 回答 2

1

不会打电话

[viewY hideThisViewAndShowLittleButton];

做正确的工作?如果你想删除 viewY 那么你可以调用:

[viewY removeFromSuperview];

为了访问viewYfrom viewZ,只要可以viewZ访问viewX,您可以定义一个viewX返回给您的方法viewY。类似的东西(在你的实现文件中viewX

- (UIView*)viewY {
   return <viewX_knows_which_value_to_return>;
}

至于viewX_knows_which_value_to_return,只要这viewY是唯一的子视图,您可以这样做:

[self.view.subviews lastObject];

(注意:我在这里假设 viewX 实际上是一个视图控制器,而不是 UIView)。

于 2012-07-04T15:23:29.563 回答
0

这是个好办法。您甚至可以通过隐藏或添加 Alpha 来做到这一点。

vY.hidden = YES;

取回它

vY.hidden = NO;
于 2012-07-04T15:27:41.217 回答