2012-08-12 80 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 
    } 
} 
相關問題