我有一个子视图,视图的一部分是透明的,所以对于用户来说,如果他们要在那个透明空间中触摸,那么任何可见的(但也在它下面)都应该是交互式的。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint pt = [[touches anyObject] locationInView:self];
if (CGRectContainsPoint(tableViewUse.frame, pt)){
[self becomeFirstResponder];
}else {
[super becomeFirstResponder];
}
}
我的子视图类中有上述代码,但问题是 [super becomeFirstResponder] 调用不起作用。现在显而易见的解决方案是在我的超级视图类中有一个 [self resignFirstResponder] 调用;然而,我计划在我的代码中使用这个类的许多实例,所以我必须找到触摸并将它与我的每个实例的框架等进行比较。所以优雅的解决方案是控制子视图中的所有内容。
感谢您的任何帮助!
Ps 刚刚注意到一个会改变我的问题的问题。如果我要让超级视图成为第一响应者,那么将在该超级视图中调用任何 touchesBegan 方法,并且必须在那里管理触摸。哎呀。