我有一个带有三个按钮的应用程序(实际上UIView
's) 水平放置下导航栏。
这三个按钮的尺寸足够大(例如,比后退按钮大),但是当点击大致位于顶部三分之一部分时,它们不会响应触摸。
我知道导航栏正下方的这个区域是为后退按钮和其他 UINavigation 项目“保留”的,这些项目的触摸区域超出了导航栏(相当大的余量),但是在某些情况下,没有附近甚至没有导航项来窃取事件,而且我的视图仍然没有响应。
奇怪的是我am接到电话hitTest
我的 UIView 中的方法,只是从来没有 TouchBegan/Ended/等等。
结果是按下按钮非常困难,并且如果一个人靠近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 https://stackoverflow.com/questions/6672229/how-to-subclass-uinavigationbar-for-a-uinavigationcontroller-programatically.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)