diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m index 8c502d45..a2117109 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m @@ -74,7 +74,11 @@ - (instancetype)init { if (self = [super init]) { - self.feedbackGenerator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleHeavy]; + // 🔥 修复:正确初始化震动反馈 + if (@available(iOS 10.0, *)) { + self.feedbackGenerator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleHeavy]; + [self.feedbackGenerator prepare]; // 🔥 关键:调用prepare方法 + } self.updateGoldQueue = @[].mutableCopy; @@ -299,10 +303,26 @@ NSLog(@"[Combo effect] ⚠️ 点击间隔过短,忽略此次点击"); return; } + + // 🔥 修复:将震动反馈移到方法开始处,确保及时响应 + if (@available(iOS 10.0, *)) { + if (self.feedbackGenerator) { + @try { + [self.feedbackGenerator impactOccurred]; + NSLog(@"[Combo effect] 📳 震动反馈已触发"); + } @catch (NSException *exception) { + NSLog(@"[Combo effect] ⚠️ 震动反馈失败: %@", exception.reason); + } + } else { + NSLog(@"[Combo effect] ⚠️ 震动反馈生成器未初始化"); + } + } else { + NSLog(@"[Combo effect] ⚠️ 设备不支持震动反馈 (iOS < 10.0)"); + } + #if RELEASE isHandlingTap = YES; #endif - [self.feedbackGenerator impactOccurred]; NSLog(@"[Combo effect] 👆 连击面板被点击,发送礼物"); @@ -330,6 +350,16 @@ [[GiftComboManager sharedManager] clear]; } +// 🔥 新增:重新准备震动反馈的方法 +- (void)prepareFeedbackGenerator { + if (@available(iOS 10.0, *)) { + if (self.feedbackGenerator) { + [self.feedbackGenerator prepare]; + NSLog(@"[Combo effect] 📳 震动反馈已重新准备"); + } + } +} + // SVGAPlayerDelegate: 当动画播放完毕时调用 - (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { [self.playImageView stepToPercentage:0 andPlay:NO];