我可能失去了一些东西,但是......TouchUpInside上的UIView儿童
我有几个孩子UIView
(一对夫妇的UILabel
的和UIImageView
)。我需要当用户点击(抽头)来捕捉事件父UIView
内的任何地方 - 在UIView
或其任何子女)的可见部分。
这样做的最好方法是什么?
我可能失去了一些东西,但是......TouchUpInside上的UIView儿童
我有几个孩子UIView
(一对夫妇的UILabel
的和UIImageView
)。我需要当用户点击(抽头)来捕捉事件父UIView
内的任何地方 - 在UIView
或其任何子女)的可见部分。
这样做的最好方法是什么?
您可以在Identity Inspector中更改UIView的类...使其成为UIControl
,然后您可以为您的视图添加一个事件UITouchUpInside
- 以获取它的点击。
祝你好运!
编辑:这里是一个一步一步用截图:
的观点...
...当然,没有事件。
回去改的UIView与UIControl和...
的Ta-DAA!活动!
钩到UITouchUpInside事件的方法
这是应该的样子在接口文件
这是应该看起来像在实现文件(可以,当然,用任何你想要的东西来代替伐木)
由于有多个选项,您必须提供更多的细节。
如果你想正常的自来水,你可以赶上标准的触摸事件之一,看看子视图得到了该事件。事情是这样的:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if(touch.view != self.mySubViewOfInterest)
{
// perform my actions
}
}
如果需要复杂的手势识别,那么你可以使用UIGestureRecognizer之一,并把它分配给子视图或主视图。
无论如何,您必须注意,所有子视图(您希望他们捕捉事件的子视图)必须启用用户交互,否则您的主视图也会捕获子视图的事件,最终您将调试并调试时不知道发生了什么。
可以通过让你的父视图手势识别器,并确保你的孩子没有自己的手势识别器假死这种行为。为此,请向您的父母UIView
添加手势识别器,以侦听轻敲。其中parentView
是为您的孩子的意见(UILabels
/UIImageView
)和handleTap
含有看法是parentView
实现的方法,这样做:
UIGestureRecognizer *tapParent = [[UITapGestureRecognizer alloc]initWithTarget:parentView action:@selector(handleTap)];
[parentView addGestureRecognizer:tapParent];
[tapParent release];
随着孩子的观点并不拥有自己的手势识别器,他们不会'吃'的姿态,所以只要你在其范围内点击,父视图就会响应。
这适用于我
斯威夫特3
let gesture = UITapGestureRecognizer(target: self, action: selector(self.customViewClick))
withSender: self)
customView.addGestureRecognizer(gesture)
func customViewClick() {
print("custom view clicked!")
}
您正在使用的Xcode 4? – Sirens