新增 Banner 手势优化实施总结文档,记录了在 RoomAnimationView 中对 banner 手势系统的优化过程,包括手势识别器的重新设计、区域划分逻辑、tap 手势处理逻辑及交互区域检查等。同时,优化了多个视图中的通知处理逻辑,确保手势事件的准确传递与处理,提升用户交互体验。
This commit is contained in:
@@ -9,6 +9,16 @@
|
||||
// MARK: 只要有子视图命中,就交给子视图处理;子视图都没命中就放弃处理,自己不接收任何触摸事件。
|
||||
@implementation XPRoomAnimationHitView
|
||||
|
||||
//- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
|
||||
// for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) {
|
||||
// UIView * subView = [self.subviews xpSafeObjectAtIndex:i];
|
||||
// CGPoint convertPoint = [subView convertPoint:point fromView:self];
|
||||
// if (CGRectContainsPoint(subView.bounds, convertPoint)) {
|
||||
// return [subView hitTest:convertPoint withEvent:event];
|
||||
// }
|
||||
// }
|
||||
// return nil;
|
||||
//}
|
||||
|
||||
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
|
||||
|
||||
@@ -17,11 +27,6 @@
|
||||
return nil;
|
||||
}
|
||||
|
||||
// 可选:判断点是否在自身bounds内
|
||||
// if (!CGRectContainsPoint(self.bounds, point)) {
|
||||
// return nil;
|
||||
// }
|
||||
|
||||
// 从后往前遍历子视图
|
||||
for (NSInteger i = self.subviews.count - 1; i >= 0; i--) {
|
||||
UIView *subView = [self.subviews xpSafeObjectAtIndex:i];
|
||||
@@ -35,7 +40,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 如果子视图都不响应,则不处理
|
||||
// 如果子视图都不响应,则返回nil,让触摸事件传递给下层视图
|
||||
// 这是关键:不拦截触摸事件,让它们正常传递
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user