无法在段之间切换以进行UISegment控制

时间:2012-02-29 18:42:08

标签: objective-c ios uisegmentedcontrol

以下是我用来设置我的UISegment控件的代码段

//Add UIView below the nav bar
UIView *buttonContainer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];

[self.view addSubview:buttonContainer];

//Set up segment control
NSString *nicknameLabel = [NSString stringWithFormat:@"%@",self.nickname];

UISegmentedControl *tempSegmentControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:nicknameLabel,@"Friends", @"Everyone", nil]];
tempSegmentControl.frame = CGRectMake(-8, 44, 336, 30);

self.segmentControl = tempSegmentControl;
[self.segmentControl setWidth:112 forSegmentAtIndex:0];
[self.segmentControl setWidth:112 forSegmentAtIndex:1];
[self.segmentControl setWidth:112 forSegmentAtIndex:2];
self.segmentControl.selectedSegmentIndex = 0;
[self.segmentControl addTarget:self action:@selector(toggleControls:) forControlEvents:UIControlEventValueChanged];
[self.segmentControl setSegmentedControlStyle:UISegmentedControlStylePlain];

[self changeSegmentFontSize];

[tempSegmentControl release];
[buttonContainer addSubview:self.segmentControl];
[self.view bringSubviewToFront:buttonContainer];
[buttonContainer bringSubviewToFront:self.segmentControl];
[buttonContainer release];

但是,我在应用程序中,我无法在分段控件的段之间切换。 (仅显示默认的第一个段突出显示)

enter image description here

关于如何解决此问题的任何建议?

2 个答案:

答案 0 :(得分:3)

它看起来像一个边界问题。包含视图的边界为{0,0,320,30},而分段控件的边界为{-8,44,336,30}。这意味着分段控件在技术上“在”包含视图的“外部”,并且iOS命中测试不会记录触摸。

尝试不设置分段控件的帧(暂时注释掉tempSegmentControl.frame = CGRectMake(-8, 44, 336, 30);行),看看会发生什么。

答案 1 :(得分:2)

  1. 检查您的视图,buttonContainer和段控件的userInteractionEnabled是否设置为TRUE。

  2. 检查buttonContainer的superview的边界是否足够宽,足以完全包含buttonContainer。如果他们没有那么打击 - 测试将无法工作,分段控制将不会有任何接触。