使用uinavigation栏左侧的button发出

我在导航栏的左侧有一个button。 我也有一个靠近那个button的UIButton。

现在,当我点击导航栏下面的button时,很多情况下点击了NAB栏上的button。

任何想法为什么发生这种情况? 有什么build议么 ?

谢谢。

图片:如果你点击红色button内的任何地方,导航栏的左上angularbutton仍然被按下。

在这里输入图像说明

导航栏button代码:

UIButton *leftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)]; [leftButton setShowsTouchWhenHighlighted:NO]; [leftButton setImage:[UIImage imageNamed:@"deals.png"] forState:UIControlStateNormal]; [leftButton setImage:[UIImage imageNamed:@"deals_down.png"] forState:UIControlStateSelected]; [leftButton setImage:[UIImage imageNamed:@"deals_down.png"] forState:UIControlStateHighlighted]; [leftButton addTarget:self action:@selector(dealsButtonPressed:) forControlEvents:UIControlEventTouchDown || UIControlEventTouchUpInside]; self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:leftButton] autorelease]; [leftButton release]; 

UINavigationButtons有一个比可见区域大得多的可点击区域,苹果公司以这种方式使其易于使用。 如果你真的想要有两个相互靠近的button,你必须inheritanceUINavigationBar,更具体地说,覆盖触摸事件,获取触摸坐标,并按照你认为合适的方式进行操作。 更多信息在这里 。

请注意,如果Apple放大了导航栏的左侧button(不是右侧的button),则会出现可用性问题。 它几乎是iphone设备上最被点击的button,所以人们有能力按照本能的方式点击button(我从来不看button,我只知道运动)。

请记住,如果您减less触摸区域,用户可能会遇到困难。

我的build议,对不起,将下移3或5px下你的3个button。

它看起来像是如何初始化UIButton实例的问题。 通常,我们会使用[UIButton buttonWithType:custom]; 在你的情况。

从这个答案中 ,他们解决了类似的问题:

 UIImage *myImage = [UIImage imageNamed:@"paw.png"]; UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; [myButton setImage:myImage forState:UIControlStateNormal]; myButton.showsTouchWhenHighlighted = YES; myButton.frame = CGRectMake(0.0, 0.0, myImage.size.width, myImage.size.height); [myButton addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:myButton]; self.navigationItem.rightBarButtonItem = rightButton; [rightButton release]; [myButton release]; 

这不是你正在寻找的代码,但它显示了如何正确实例化一个UIButton实例。 希望能解决你遇到的问题。