在导航按钮附近点击会调用按钮 - 意外的iPhone行为

时间:2010-01-21 01:06:51

标签: iphone

我有一个UIViewController类,其中显示了导航栏,并在导航栏的最右端有一个按钮。然后就在我的主要内容区域下方,导航栏下方显示了一个UISegmentedControl。

每当我点击/点击右键附近的导航栏而不是直接点击按钮时,我就会收到意外的按钮按下事件。通常,当我尝试点击恰好位于按钮下方的最右边的段项时。因此,点击按钮而不是段。如何确保事件指向正确的接收器?

我的UI是使用Interface Builder创建的,UISegmentedControl连接到我的nib文件中的类。

我的课程:

@interface MyViewController : UIViewController
{
    IBOutlet UISegmentedControl *segmentedControl;

}
@end

@implementation MyViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{
UIBarButtonItem *button = [[UIBarButtonItem alloc] 
                       initWithBarButtonSystemItem:UIBarButtonSystemItemCamera 
                       target:self action:@selector(onButtonPressed:)];                                    

self.navigationItem.rightBarButtonItem = button;
[button release];
}

- (IBAction)onButtonPressed:(id)sender 
{
    NSLog(@"onButtonPressed reached!");
}

- (IBAction)onSegmentItemPressed:(id)sender 
{
    NSLog(@"onSegmentItemPressed for: %d", [segmentedControl selectedSegmentIndex]);

}
@end

2 个答案:

答案 0 :(得分:1)

这是标准行为。它旨在使这些小按钮更容易按下。您可以在任何带有导航栏的应用中尝试它,您将获得相同的结果。如果没有看到您的应用程序的布局,我会认为您要么错过了细分(尝试更仔细地点击),要么细分太靠近导航栏按钮(稍微移动一下)。

可以使用hitTest:方法来确定触摸是否在片段中,并手动激活它,但我认为这比它的价值更麻烦。

答案 1 :(得分:0)

您可能需要将分段控件的原点进一步垂直向下移动,远离导航栏按钮项,以防止意外点击。