Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何禁用除一个对象之外的视图的用户交互?_Iphone_Objective C - Fatal编程技术网

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

Iphone 如何禁用除一个对象之外的视图的用户交互?,iphone,objective-c,Iphone,Objective C,在我看来,有一个重置按钮。除了该按钮之外,我需要禁用userinteraction。如何才能做到这一点?任何人都可以共享代码。提前感谢?对于所有元素,都有一个属性userinteractionenabled。将其设置为false yourelement.userInteractionEnabled = NO; 同时将UIButton放在视图层次结构的顶部 另一个选项是在整个视图上放置一个tranparent UIButton,并将UIButton放置在此视图的顶部。这样,只有您的UIButto

在我看来,有一个重置按钮。除了该按钮之外,我需要禁用userinteraction。如何才能做到这一点?任何人都可以共享代码。提前感谢?

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

yourelement.userInteractionEnabled = NO;
同时将UIButton放在视图层次结构的顶部


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

btn1是您的按钮,self.view-您的视图

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

更好的方法是,定义一个“神奇的价值”,它将帮助您:

#define kDontDisableUserInteraction 3928473 #定义kDontDisableUserInteraction 3928473 然后将此值设置为您不希望禁用的按钮的标记:

[resetButton setTag:kDontDisableUserInteraction]; [resetButton setTag:kDontDisableUserInteraction]; 现在可以在superview的类中创建函数:

- (void)setInterfaceEnabled:(BOOL)newEnabled { for (UIView *subview in self.subviews) { if (subView.tag != kDontDisableUserInteraction) continue; subView.userInteractionEnabled = newEnabled; } } -(void)setInterfaceEnabled:(BOOL)newEnabled{ 用于(UIView*self.subview中的子视图){ if(subView.tag!=kDontDisableUserInteraction) 继续; subView.userInteractionEnabled=newEnabled; } }
这允许您创建其他不可禁用的按钮,只需给它们正确的标记(可以是您想要的任何int值,而不仅仅是3928473,取决于您的#define)。

如果我有100个元素,那么这不是一个rght答案?是的,在这种情况下,您可以尝试第二个选项。这对我来说非常有用。用于将输入屏幕设置为只读模式。禁用所有功能,然后启用导航按钮。谢谢