以下是我用来设置我的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];
但是,我在应用程序中,我无法在分段控件的段之间切换。 (仅显示默认的第一个段突出显示)
关于如何解决此问题的任何建议?
答案 0 :(得分:3)
它看起来像一个边界问题。包含视图的边界为{0,0,320,30},而分段控件的边界为{-8,44,336,30}。这意味着分段控件在技术上“在”包含视图的“外部”,并且iOS命中测试不会记录触摸。
尝试不设置分段控件的帧(暂时注释掉tempSegmentControl.frame = CGRectMake(-8, 44, 336, 30);
行),看看会发生什么。
答案 1 :(得分:2)
检查您的视图,buttonContainer和段控件的userInteractionEnabled是否设置为TRUE。
检查buttonContainer的superview的边界是否足够宽,足以完全包含buttonContainer。如果他们没有那么打击 - 测试将无法工作,分段控制将不会有任何接触。