2010-11-10 90 views
1

我正在创建一个盒子的矩阵,其中包含一些图像。为了管理水龙头,并获取哪个框被挖掘,我放置一个UIButton在每个不可见的框中,也是框的大小。以编程方式在屏幕下方创建UIButtons不工作?

我添加了事件侦听器(对不起,我是一个Javascript程序员:))这样的:

[button addTarget:self action:@selector(boxTapped:) forControlEvents:UIControlEventTouchUpInside]; 

我开始模拟器起来,它的工作就好了。我可以在日志中看到按钮的标签。但是,然后我向下滚动,令我惊讶的是,屏幕下方没有任何按钮可以使用。没有事件正在发送。我完全被这个困惑,并不知道会导致什么。有没有人有任何想法?

编辑: 基本上,作为一个总结,低于屏幕的初始底部的任何东西都不会触发一个动作。当一个盒子的一半被切断时,只有当第一次显示视图时暴露的(顶部)一半才起作用。下半部分不会触发该动作。

+0

在你创建按钮的方法下,你发送了什么方法addTarget:action:forControlEvents:? – Tozar 2010-11-10 04:07:38

+0

下面是创建按钮/框的代码:http://pastebin.com/p9rWh3j0。我在一个方法中创建了框,并且我从一个循环中调用了这个方法。 – 2010-11-10 04:11:30

+0

好吧,只需添加一些东西,当我将按钮添加到这些框(真正的矩形iPhone按钮,不是看不见的)时,它们都会出现,但只有屏幕上的按钮才会突出显示... – 2010-11-10 05:01:04

回答

2

其中一个原因是您的按钮实际上放置在您框的边界之外。这些按钮仍然可见,因为您尚未将您的框设置为在界限外进行任何剪辑。因此这些按钮不能接收任何输入事件。

您可以尝试为您的方框设置clipsToBounds = YES并查看按钮是否仍然可见?

+0

我不完全得到clipToBounds应该做什么。当我将按钮设置为背景颜色为红色(通常没有背景颜色)和不透明度为0.5(所以我也可以看到它),它们都出现在正确的位置。但是,他们从未触发过此事件。 – 2010-11-10 03:50:09

+1

它是一个布尔值,用于确定子视图(即按钮)是否可以绘制在接收者边界(即框)之外。 – Nevin 2010-11-10 04:20:54

+0

打算将其标记为答案 - 我发现我将按钮放置在显示屏高度的视图中....外面的任何内容都无法被点击。 – 2010-11-10 05:05:55

1

确保处理boxTapped的视图的边界足够大,以包含最初在屏幕外的按钮。 UIView只能对自己的坐标系中的触摸作出响应,但它可以包含位于其坐标系之外的子视图,这些子视图不能被触摸。