gpt4 book ai didi

ios - tableview部分headview中的hitTest方法出现问题

转载 作者:行者123 更新时间:2023-11-29 05:43:52 25 4
gpt4 key购买 nike

enter image description here

我自定义了一个浅灰色 View 。浅灰色 View 有一个属性按钮。按钮的背景颜色是红色。

我在 lightGray View 中覆盖了 hitTest 方法。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
if (!self.isUserInteractionEnabled || self.isHidden || self.alpha <= 0.01) {
return nil;
}

if([self pointInside:point withEvent:event]){
return self.testButton;
}

return nil;

}

结果,光标位于上图中的点处。我点击按钮可以响应。

enter image description here

如果我单击浅灰色 View 的左侧区域。红色按钮无法响应。

原因是什么?

我真正的问题是 tableview 部分 headview 中的相同问题。我编写这个演示是为了测试并提出这个问题。

最佳答案

即使不使用 TableView ,仅使用自定义 View ,我也能够重现此行为,而且它看起来确实很奇怪 - 如果我们从 hitTest 返回按钮,按钮的操作不会在灰色 View 的整个区域被触发,而是会被触发仅在按钮周围一定距离处。

我添加了一个带有点击手势识别器的测试 View ,以查找按钮行为的差异,并且它按预期工作。因此,作为解决方法,您可以用 View 加手势识别器替换按钮。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.isUserInteractionEnabled || self.isHidden || self.alpha <= 0.01) {
return nil;
}

// if (CGRectContainsPoint(self.bounds, point)) {
// return self.testButton; // fires only at some distance
// }

if (CGRectContainsPoint(self.bounds, point)) {
return self.testView; // fires for every point inside gray view
}

return [super hitTest:point withEvent:event];
}

- (IBAction)testButtonTouchUpInside:(UIButton *)sender
{
NSLog(@"BTN HIT"); // Not OK
}

- (IBAction)testViewTap:(UITapGestureRecognizer *)sender
{
NSLog(@"VIEW TAP"); // OK
}

关于ios - tableview部分headview中的hitTest方法出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56327521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com