您好我有一个 UIView ,他的alpha是0.7,而下面是 UITextFields 。我不希望它在保持触摸事件的同时调用触摸事件。我尝试使用
[lightBoxView setUserInteractionEnabled:NO];
但现在 UITextFields 可以变为活动状态或第一响应者。如何禁用它来调用触摸事件以及不将触摸传递给其他人?
答案 0 :(得分:1)
您可以从严格的手势委托方法中删除这些控件。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UITextFiled class]])
{
return NO;
}
else
{
return YES;
}
}
答案 1 :(得分:1)
您还需要为所有子视图设置userInteractionEnabled = NO
。
试试这个,
[[lightBoxView subviews] makeObjectsPerformSelector:@selector(setUserInteractionEnabled:)
withObject:[NSNumber numberWithBool:NO]];
这会在setUserInteractionEnabled:
的所有直接子视图上调用lightBoxView
,并将其设置为NO
。对于更复杂的子视图层次结构,您必须递归遍历所有子视图并禁用每个子视图上的用户交互。为此,您可以在UIView
类别中编写递归方法。有关此类别方法的更多详细信息,请查看this answer。
希望有所帮助!