首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对视图禁用用户交互,但对子视图启用用户交互(UIButtons)

对视图禁用用户交互,但对子视图启用用户交互(UIButtons)
EN

Stack Overflow用户
提问于 2011-01-17 22:22:59
回答 3查看 4.6K关注 0票数 5

我有一个视图,其中包含几个覆盖UIScrollView的UIButtons。我想阻止用户在覆盖视图上进行交互,而不是在该视图中包含的UIButtons上进行交互。

我之所以将这些视图分组到一个视图中,是因为我只需更改一个属性,就可以对视图中的所有按钮应用alpha更改。我刚刚注意到iOS4.0中的IBOutletCollection,但我也需要瞄准iOS3.0。

有没有比覆盖下面的UIView方法更简单的方法呢?

代码语言:javascript
复制
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-20 09:54:36

不幸的是,如果您禁用用户与视图的交互,那么用户与所有子视图的交互也将被禁用。虽然不是很理想,但您只需要为每个按钮创建IBOutlets并相应地调整它们。为了避免将来必须编写更多额外的代码,您可以在viewDidLoad中创建一个NSArray,并将每个按钮放入其中。然后,每次您想要更改所有这些按钮上的一个属性时,您只需循环遍历数组并更改它们。这样,如果您将另一个按钮添加到组中,您只需要更新数组,其余的更改将自动传播。

票数 4
EN

Stack Overflow用户

发布于 2015-08-21 15:11:47

请看下面的答案:https://stackoverflow.com/a/13414182/2082569

因此,您需要在自定义UIView中覆盖此方法:

代码语言:javascript
复制
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView *subview = [super hitTest:point withEvent:event];
    return subview == self.button ? subview : nil;
}
票数 1
EN

Stack Overflow用户

发布于 2015-04-09 19:33:11

当您希望用户允许使用按钮时,仅使用scrollView.scrollEnabled =FALSE禁用滚动视图。当您希望用户使用scrollView.scrollEnabled =TRUE滚动视图时,再次启用;

注意:您不需要禁用滚动视图的用户交互。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4714214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档