ios 控制button點擊事件的觸發頻率
在項目中常常會遇到這樣的問題:
button點擊就會觸發相應的點擊事件,比如說是向向伺服器發送網路請求或者彈出彈框。
但如果使用者點擊頻率很快的話,那就會不停的觸發點擊事件,從而使UI錯亂。
對於這種問題我的解決方案是:設定布爾值。
(1)對於與伺服器有互動的點擊事件:點擊的時候判斷bool值;在發送請求前設定一次;伺服器得到應答後改變bool值即可。
(2)對於無伺服器互動點擊事件:點擊的時候判斷;執行彈框前設定;彈框完成後延時0.25秒在設定。
直接上代碼
....
@property (nonatomic,assign) BOOL hasLiked;
....
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.hasLiked = YES;
}
- (void)btnClick:(UIButton *)button
{
__weak VSwiperViewController *weakSelf = self;
if (button.tag == 500) {
NSInteger userAccountScore = [[VUserInfoEntityManager sharedManager] getPrivateUserInfo].score;
if (userAccountScore <_fpzGiftprice && self.hasLiked == YES) { // 點擊的時候判斷hasLiked
self.hasLiked = NO;// 執行彈框前設定
[weakSelf showNotEnoughCoinsAlertView];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
weakSelf.hasLiked = YES; //彈框完成後延時0.25秒在設定
});
}
}