1

私のアプリにはウィンドウに多くのボタンがあり、排他的タッチをすべてまとめて設定したいと考えています。これについて何か提案はありますか?ありがとう

4

8 に答える 8

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, "v@:");
}

これがわからない場合は、これこれを参照してください。

于 2012-12-29T11:07:35.913 に答える
2

一度にすべてを設定する簡単な方法をお探しですか?

配列内にすべてのボタンがある場合 (たとえば、すべて同じ IBOutletCollection に接続されている場合)、キー値コーディングを使用して、配列の ExclusiveTouch プロパティを設定できます。

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

NSArray は、配列内のすべてのアイテムに対して同じメソッドを呼び出します。

于 2012-08-12T04:43:54.763 に答える
1

これらのボタンがすべて同じビューにある場合は、ビューのサブビューをループして、特定のサブビューがボタンであるかどうかをテストし (または、セットがある場合はタグをテストし)、それぞれに ExclusiveTouch を設定できます。

于 2012-08-12T04:50:16.300 に答える
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];
    }
}

ソース

于 2012-08-12T13:39:00.223 に答える
0

ビューコントローラーのビューのすべてのボタンに排他的なタッチを設定するSwiftのコードを次に示します

for button in self.view.subviews {
    if(button.isKindOfClass(UIButton)){
        (button as! UIButton).exclusiveTouch = true
    }
}
于 2015-07-03T07:04:15.513 に答える