gpt4 book ai didi

iphone - 未调用导航栏约 8 像素内的触摸事件

转载 作者:行者123 更新时间:2023-12-03 18:32:39 25 4
gpt4 key购买 nike

我有一个应用程序,其中三个按钮(实际上是 UIView 的)水平放置在导航栏下方

这三个按钮的尺寸足够大(例如,比后退按钮大),但是当点击大致位于顶部三分之一部分时,它们不会响应触摸。

我知道导航栏正下方的这个区域是为后退按钮和其他 UINavigation 项目“保留”的,这些项目的触摸区域超出了导航栏(相当大的余量),但是在某些情况下例如,附近甚至没有导航项来窃取事件,而我的 View 仍然没有响应。

奇怪的是,我正在调用 UIView 中的 hitTest 方法,但从来没有调用 TouchBegan/Ended/etc。

结果是按下按钮非常困难,并且如果按钮靠近 UINavigationItem,该项目就会窃取事件,即使在 hitTest 中我我正在向系统返回正确的 UIView

不幸的是,我是实现者而不是设计者,因此设计更改是最后的手段。

有什么想法吗?谢谢!

最佳答案

您必须对 UINavigationBar 进行子类化,并在 CustomNavigationBar 中执行以下操作:

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

if ([self pointInside:point withEvent:event]) {
self.userInteractionEnabled = YES;
} else {
self.userInteractionEnabled = NO;
}

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

有关如何子类化 UINavigationBar 的信息,您可以找到 here .

关于iphone - 未调用导航栏约 8 像素内的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7806557/

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