在 RoomAnimationView 中新增触摸事件处理逻辑,确保在没有 banner 显示或 banner 容器不可见时不接收触摸事件,提升用户交互体验。同时,优化了 banner 区域的触摸点检测逻辑,增强代码可读性。

This commit is contained in:
edwinQQQ
2025-08-15 11:41:45 +08:00
parent 5192d58b07
commit 84e146277a

View File

@@ -5,6 +5,8 @@
// Created by P on 2025/1/13.
//
//banner
#import "RoomAnimationView.h"
#import <POP.h>
@@ -201,6 +203,9 @@ XPRoomGraffitiGiftAnimationViewDelegate
self.hostDelegate = hDelegate;
[[NIMSDK sharedSDK].broadcastManager addDelegate:self];
// RoomAnimationView
self.userInteractionEnabled = YES;
[self setup];
}
return self;
@@ -4027,4 +4032,34 @@ shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherG
}
}
#pragma mark - Touch Event Handling
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
// banner
if (self.bannerContainer.subviews.count == 0) {
NSLog(@"🎯 没有banner显示不接收触摸事件");
return NO;
}
// banner
if (self.bannerContainer.hidden || self.bannerContainer.alpha <= 0.01) {
NSLog(@"🎯 banner容器不可见不接收触摸事件");
return NO;
}
// bannerContainer
CGPoint bannerPoint = [self.bannerContainer convertPoint:point fromView:self];
if (CGRectContainsPoint(self.bannerContainer.bounds, bannerPoint)) {
NSLog(@"🎯 触摸在banner区域内接收触摸事件");
return [super pointInside:point withEvent:event];
}
// banner
NSLog(@"🎯 触摸在banner区域外穿透到下层视图 - 触摸点:(%.1f,%.1f) banner区域:(%.1f,%.1f,%.1f,%.1f)",
point.x, point.y,
self.bannerContainer.frame.origin.x, self.bannerContainer.frame.origin.y,
self.bannerContainer.frame.size.width, self.bannerContainer.frame.size.height);
return NO;
}
@end