在項目中常常會遇到這樣的問題:
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秒在設置
});
}
}