我有一个视图,其中包含几个覆盖UIScrollView的UIButtons。我想阻止用户在覆盖视图上进行交互,而不是在该视图中包含的UIButtons上进行交互。
我之所以将这些视图分组到一个视图中,是因为我只需更改一个属性,就可以对视图中的所有按钮应用alpha更改。我刚刚注意到iOS4.0中的IBOutletCollection,但我也需要瞄准iOS3.0。
有没有比覆盖下面的UIView方法更简单的方法呢?
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;发布于 2011-01-20 09:54:36
不幸的是,如果您禁用用户与视图的交互,那么用户与所有子视图的交互也将被禁用。虽然不是很理想,但您只需要为每个按钮创建IBOutlets并相应地调整它们。为了避免将来必须编写更多额外的代码,您可以在viewDidLoad中创建一个NSArray,并将每个按钮放入其中。然后,每次您想要更改所有这些按钮上的一个属性时,您只需循环遍历数组并更改它们。这样,如果您将另一个按钮添加到组中,您只需要更新数组,其余的更改将自动传播。
发布于 2015-08-21 15:11:47
请看下面的答案:https://stackoverflow.com/a/13414182/2082569
因此,您需要在自定义UIView中覆盖此方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *subview = [super hitTest:point withEvent:event];
return subview == self.button ? subview : nil;
}发布于 2015-04-09 19:33:11
当您希望用户允许使用按钮时,仅使用scrollView.scrollEnabled =FALSE禁用滚动视图。当您希望用户使用scrollView.scrollEnabled =TRUE滚动视图时,再次启用;
注意:您不需要禁用滚动视图的用户交互。
https://stackoverflow.com/questions/4714214
复制相似问题