解決UIButton重復點擊耿战,發(fā)送多次請求問題

這里使用的是Runtime的黑魔法方法實現,靈感來源于CocoChina,在用網上搜到的方法運行不成功落包,死循環(huán)部蛇,廢話不多說上自己的代碼。

給UIControl建個分類
UIControl+FMGControl.h

#import <UIKit/UIKit.h>
@interface UIControl (FMGControl)
/** 按鈕點擊間隔*/
@property (assign, nonatomic) NSTimeInterval acceptEventInterval;

@end

UIControl+FMGControl.m

 
#import "UIControl+FMGControl.h"

static const char *UIControl_acceptEventInterval = "UIControl_acceptEventInterval";

@implementation UIControl (FMGControl)

- (NSTimeInterval)acceptEventInterval
{
    return [objc_getAssociatedObject(self, UIControl_acceptEventInterval) doubleValue];
}


- (void)setAcceptEventInterval:(NSTimeInterval)acceptEventInterval
{
    objc_setAssociatedObject(self, UIControl_acceptEventInterval, @(acceptEventInterval), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (BOOL)FMG_ignoreEvent
{
    return [objc_getAssociatedObject(self, UIControl_acceptEventInterval) doubleValue];
}


+ (void)load
{
    Method a = class_getInstanceMethod(self, @selector(sendAction:to:forEvent:));
    Method b = class_getInstanceMethod(self, @selector(FMG_sendAction:to:froEvent:));
    
    method_exchangeImplementations(a, b);
}

- (void)FMG_sendAction:(SEL)action to:(id)target froEvent:(UIEvent *)event
{
    if (self.acceptEventInterval > 0) {
        if (self.userInteractionEnabled) {
            
            [self FMG_sendAction:action to:target froEvent:event];
        }
        self.userInteractionEnabled = NO;
        
        [self performSelector:@selector(setUserInteractionEnabled:) withObject:@(YES) afterDelay:self.acceptEventInterval];


        /* GCD 延遲執(zhí)行 self.acceptEventInterval:為延遲時間
        __weak typeof (self) weakSelf = self;
        dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.acceptEventInterval * NSEC_PER_SEC));
        
        dispatch_after(delayTime, dispatch_get_main_queue(), ^{
            weakSelf.userInteractionEnabled = YES;
        });
        
        */
    
    } else {
        [self FMG_sendAction:action to:target froEvent:event];
    }
    
}

@end

使用:

在你需要用到的地方導入頭文件: UIControl+FMGControl.h
用到的地方多的話咐蝇,可以導入到pch 文件中
然后給按鈕設置個間隔時間 self.acceptEventInterval

同時不會影響到導航條上的按鈕

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末涯鲁,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子有序,更是在濱河造成了極大的恐慌抹腿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭寿,死亡現場離奇詭異警绩,居然都是意外死亡,警方通過查閱死者的電腦和手機盅称,發(fā)現死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門肩祥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缩膝,你說我怎么就攤上這事混狠。” “怎么了疾层?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵将饺,是天一觀的道長。 經常有香客問我痛黎,道長予弧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任舅逸,我火速辦了婚禮桌肴,結果婚禮上,老公的妹妹穿的比我還像新娘琉历。我一直安慰自己坠七,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布旗笔。 她就那樣靜靜地躺著彪置,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝇恶。 梳的紋絲不亂的頭發(fā)上拳魁,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音撮弧,去河邊找鬼潘懊。 笑死姚糊,一個胖子當著我的面吹牛,可吹牛的內容都是我干的授舟。 我是一名探鬼主播救恨,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼释树!你這毒婦竟也來了肠槽?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奢啥,失蹤者是張志新(化名)和其女友劉穎秸仙,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體桩盲,經...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡寂纪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了赌结。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弊攘。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姑曙,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情迈倍,我是刑警寧澤伤靠,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站啼染,受9級特大地震影響宴合,放射性物質發(fā)生泄漏。R本人自食惡果不足惜迹鹅,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一卦洽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斜棚,春花似錦阀蒂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至义钉,卻和暖如春昧绣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捶闸。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工夜畴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拖刃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓贪绘,卻偏偏與公主長得像兑牡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兔簇,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內容

  • - (void)buttonClicked:(id)sender{ //點擊按鈕后先取消之前的操作发绢,再進行需要進行...
    嘚嘚以嘚嘚閱讀 366評論 0 0
  • 在實際開發(fā)中我們,點擊一個button按鍵時垄琐,需要觸發(fā)一個事件去執(zhí)行边酒。用戶在正常操作情況下,單次點擊時狸窘,butto...
    hnxyzhw閱讀 7,055評論 42 118
  • 1墩朦,NSObject中description屬性的意義,它可以重寫嗎?答案:每當 NSLog(@"")函數中出現 ...
    eightzg閱讀 4,144評論 2 19
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,143評論 30 470
  • 2000年翻擒,與朋友共進晚餐氓涣,聽他說了四句話:‘一切有為法,如夢幻泡影陋气,如露亦如電劳吠,應作如是觀’。當時我為之一震巩趁,問...
    張零零閱讀 449評論 0 0