我已经想出了如何创建一个新的UI元素,我触摸并使用[self.view addSubview:[uilabel reference]]添加它。但是,如果我点击相同的位置,它只会在当前的子视图之上添加另一个子视图。
我能够为我正在制作的网格的每个部分创建一个唯一的密钥(从而放置子视图)。有什么办法可以用钥匙标记这个子视图,这样我可以切换它的可见性吗?
以下是一些代码:
CGRect rectNote = CGRectMake(notePosX, notePosY, noteFrameWidth - 2, noteFrameHeight - 3);
UILabel *rectNoteLabel = [[UILabel alloc] initWithFrame:rectNote];
//label settings
[self.view addSubview:rectNoteLabel];
显然我计算了标签的位置,它可能被用作子视图的关键字?
答案 0 :(得分:1)
UIview有一个“tag”属性,所以是的,你可以标记一个视图并在以后再次找到它。
然后你可以调用[self.view viewWithTag:blah]来取回它。
如果您只想弄清楚您是否存在点击的子视图,那么Jonathan Grynspan已经提到了-hitTest:
答案 1 :(得分:0)
您可以通过将-hitTest:
发送到父视图来测试该位置是否存在子视图。
在控件类中保留可变数组或设置可能更容易,并在实际添加新视图之前对其内容进行测试。 (迭代遍历数组的费用与迭代父视图的子视图的费用相同,在任何一种情况下,它可能都不会很重要。)