[ios] الهدف ج كيفية تعيين لمسة حصرية لجميع أويبوتونس على التطبيق كله



Answers

إذا كنت تريد حقا لتعيين إكسلوستوش لجميع أويبوتونس + الفئات الفرعية في التطبيق الخاص بك كله وليس مجرد وجهة نظر واحدة، يمكنك استخدام طريقة سويزلينغ .

يمكنك استخدام وقت التشغيل أوبجك لتجاوز willMoveToSuperview وتعيين لمسة حصرية هناك. هذا هو موثوق جدا ولم يكن لدي أي مشاكل في استخدام هذه التقنية.

أنا أحب القيام بذلك خاصة بالنسبة UISwitch ، لأن التعامل مع اللمس لمفاتيح يمكن أن تكون صعبة بعض الشيء وسوف UISwitch تساعد على تجنب الأخطاء الناجمة عن الصنابير في وقت واحد على مفاتيح مختلفة

عينة مأخوذة من الرابط أعلاه وتغييرها بحيث يتم تعيين إكسلوستوش:

#import <objc/runtime.h>


@implementation UIButton (INCButton)

+ (void)load
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [self class];

        SEL originalSelector = @selector(willMoveToSuperview:);
        SEL swizzledSelector = @selector(inc_willMoveToSuperview:);

        Method originalMethod = class_getInstanceMethod(class, originalSelector);
        Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);

        BOOL didAddMethod =
        class_addMethod(class,
                    originalSelector,
                    method_getImplementation(swizzledMethod),
                    method_getTypeEncoding(swizzledMethod));

        if (didAddMethod) {
            class_replaceMethod(class,
                            swizzledSelector,
                            method_getImplementation(originalMethod),
                            method_getTypeEncoding(originalMethod));
        } else {
            method_exchangeImplementations(originalMethod, swizzledMethod);
        }
    });
}

- (void)inc_willMoveToSuperview:(UIView *)newSuperview
{
    // This is correct and does not cause an infinite loop!
    // See the link for an explanation 
    [self inc_willMoveToSuperview:newSuperview];

    [self setExclusiveTouch:YES];
}

@end

إنشاء فئة وإدراج هذا الرمز لكل فئة تريد تغييرها.

Question

بلدي التطبيق لديه العديد من الأزرار من خلال الخروج من التطبيق

أريد أن تعيين الحصري اللمس كل منهم معا في وقت واحد. أو جميع وجهات النظر في التطبيق

يمكننا تعيين فردي من قبل

[button setExclusiveTouch:YES];

ولكن أريد أن تعيين في وقت واحد لجميع الأزرار في التطبيق

يمكن أن نضع كل عرض لمسة حصرية؟

أي هيئة لديها أي فكرة يرجى توحي لي.




[[UIButton appearance] setExclusiveTouch:YES];



Links