如何禁用除一个对象之外的视图的用户交互?

时间:2011-07-06 14:18:52

标签: iphone objective-c

在我的视图中有重置按钮。我需要禁用userinteraction,除了那个按钮。我可以这样做,任何人都可以共享代码。提前谢谢吗?

3 个答案:

答案 0 :(得分:7)

btn1是你的按钮,self.view - 你的观点

for (UIView *view in self.view.subviews)
    view.userInteractionEnabled=NO;
btn1.userInteractionEnabled=YES;

答案 1 :(得分:0)

对于所有元素,都有一个属性userinteractionenabled。将其设置为false

yourelement.userInteractionEnabled = NO;

同时将您的UIButton置于视图层之上。

其他选项是在整个视图上放置一个透明的UIButton,并在此视图的顶部放置UIButton。这样只有你的UIButton触摸了。其他接触将通过透明按钮进行,该按钮不起作用。

答案 2 :(得分:0)

更好的方法,定义一个可以帮助你的“神奇价值”:

#define kDontDisableUserInteraction 3928473

然后将此值设置为您不希望禁用的按钮的标记:

[resetButton setTag:kDontDisableUserInteraction];

您现在可以在superview的类中创建一个函数:

- (void)setInterfaceEnabled:(BOOL)newEnabled {
    for (UIView *subview in self.subviews) {
        if (subView.tag != kDontDisableUserInteraction)
            continue;
        subView.userInteractionEnabled = newEnabled;
    }
}

这允许您创建其他不可禁用的按钮,只需为它们提供正确的标记(可以是您想要的任何int值,而不仅仅是3928473,取决于您的#define)。