2012-08-12 62 views

回答

1

你只是想找一个简单的方法来一次设置它们?

如果您在阵列中的所有按钮(例如它们都连接到同一IBOutletCollection),您可以使用键值编码设置数组的exclusiveTouch属性:

[buttonArray setValue:[NSNumber numberWithBool:YES] forKey:@"exclusiveTouch"]; 

NSArray中,然后将在数组中的每个项目上调用相同的方法。

+0

他们不在阵。可以在XIB中设置它们吗? – DavidNg 2012-08-12 04:55:06

1

如果这些按钮都在同一视图中,则可以遍历视图的子视图,测试特定的子视图是否为按钮(或者如果有一组,则测试标记)并分别设置exclusiveTouch。

1

我刚刚找到这个答案:

#pragma mark Set Buttons Exclusive Touch Yes 
-(void)setExclusiveTouchForButtons:(UIView *)myView 
{ 
    for (UIView * button in [myView subviews]) { 
     if([button isKindOfClass:[UIButton class]]) 
      [((UIButton *)button) setExclusiveTouch:YES]; 
    } 
} 

Source

5

有一种方法来设置独占触摸到应用中的所有按钮,可能会有所帮助。

#import </usr/include/objc/objc-class.h> 

static IMP gOringinalWillMoveToSuperview = nil; 

static id newMoveToSuperviewPlusSettingExclusiveTouch(id self,SEL selector,...) 
{ 
    va_list arg_list; 
    va_start(arg_list,selector); 
    gOringinalWillMoveToSuperview(self,selector,arg_list); 
    [self setExclusiveTouch:YES]; 
    return nil; 
} 

-(void)addSettingExclusiveTouchToAllUIViewMethodWillMoveToSuperview 
{ 
    gOringinalWillMoveToSuperview = class_getMethodImplementation([UIButton class], @selector(willMoveToSuperview:)); 
    class_replaceMethod([UIButton class], @selector(willMoveToSuperview:), &newMoveToSuperviewPlusSettingExclusiveTouch, "[email protected]:"); 
} 

,如果你不明白这一点,你可以参考thisthis

+0

我应该在哪里粘贴这段代码? – 2014-06-04 19:27:48

+0

@ZuzooVn你应该粘贴此代码之前,任何想要设置独家触摸创建视图。 – CarmeloS 2014-06-06 04:44:43

0

如果您要实用地添加按钮,请在添加到其超级视图之前,为每个按钮发送消息至按钮[button setExclusiveTouch:YES];。否则,如果您使用的是xib,则必须将相同的消息发送到viewDidLoad或loadView中的按钮。

1
-(void)setExclusiveTouchForButtons:(UIView *)myView 
{ 
    for (UIView * v in [myView subviews]) { 
     if([v isKindOfClass:[UIButton class]]) 
      [((UIButton *)v) setExclusiveTouch:YES]; 
     else if ([v isKindOfClass:[UIView class]]){ 
      [self setExclusiveTouchForButtons:v]; 
     } 
    } 
} 

然后在viewDidAppear

0

这里是迅速一些代码,将设置独占触摸到所有的按钮在你的ViewController的看法

for button in self.view.subviews { 
    if(button.isKindOfClass(UIButton)){ 
     (button as! UIButton).exclusiveTouch = true 
    } 
}