我有一个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
答案 0 :(得分:1)
这是标准行为。它旨在使这些小按钮更容易按下。您可以在任何带有导航栏的应用中尝试它,您将获得相同的结果。如果没有看到您的应用程序的布局,我会认为您要么错过了细分(尝试更仔细地点击),要么细分太靠近导航栏按钮(稍微移动一下)。
可以使用hitTest:
方法来确定触摸是否在片段中,并手动激活它,但我认为这比它的价值更麻烦。
答案 1 :(得分:0)
您可能需要将分段控件的原点进一步垂直向下移动,远离导航栏按钮项,以防止意外点击。