Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
点击导航按钮附近的按钮会调用按钮-意外的iPhone行为_Iphone - Fatal编程技术网

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

点击导航按钮附近的按钮会调用按钮-意外的iPhone行为,iphone,Iphone,我有一个UIViewController类,其中显示了一个导航栏,导航栏最右端有一个按钮。然后它的正下方是我的主要内容区域,导航栏下方显示了一个UISegmentedControl 每当我点击/点击右侧按钮附近的导航栏,但不是直接点击按钮,我就会收到一个意外的按钮按下事件。通常,当我试着点击按钮下方最右边的片段项目时。因此,点击是在按钮上,而不是在片段上。如何确保事件指向正确的接收者 我的UI是用Interface Builder创建的,UISegmentedControl连接到nib文件中的我

我有一个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

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

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

这是标准行为。它的设计目的是使这些小按钮更容易按下。你可以在任何带有导航条的应用程序中尝试,你会得到同样的结果。如果看不到你的应用程序的布局,我会认为你要么错过了片段(试着更仔细地点击),要么片段太靠近导航栏按钮(轻轻移动)


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

这是标准行为。它的设计目的是使这些小按钮更容易按下。你可以在任何带有导航条的应用程序中尝试,你会得到同样的结果。如果看不到你的应用程序的布局,我会认为你要么错过了片段(试着更仔细地点击),要么片段太靠近导航栏按钮(轻轻移动)


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

如何使它看起来像导航条和区段控制显示的视觉上没有间隙?我想让它们看起来像一个坐在另一个的正下方……我不认为你能让它看起来没有空隙。如果没有间隙,则触摸事件可能稍微不准确,并触发错误的按钮。也许你可以将分段控件直接放在导航栏中。我如何使它看起来像导航栏和分段控件出现的地方的视觉上没有间隙?我想让它们看起来像一个坐在另一个的正下方……我不认为你能让它看起来没有空隙。如果没有间隙,则触摸事件可能稍微不准确,并触发错误的按钮。也许您可以将分段控件直接放在导航栏中。