UISegmentedControl段大小触摸检测

时间:2012-04-20 12:19:33

标签: ios touch uisegmentedcontrol

我创建了一个分段控制器,它有不同大小的段。 当我检查我看到段控制器有不同的宽度尺寸段,但当我尝试触摸最大的段时,它只能触摸段的左侧部分。 (可能只是前50个px部分,但是段是160像素)。如何设置片段的可触摸区域?

//My header file:        
#import <UIKit/UIKit.h>
@interface Form1 : UIViewController <UIAlertViewDelegate>{
IBOutlet UISegmentedControl *combobox6001;
}
@property (nonatomic, strong) IBOutlet UISegmentedControl *combobox6001;
@end

#import "Form1.h"
@implementation Form1
@synthesize combobox6001;
- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [combobox6001 setWidth:50  forSegmentAtIndex:0];
    [combobox6001 setWidth:50  forSegmentAtIndex:1];
    [combobox6001 setWidth:160 forSegmentAtIndex:2];
}

1 个答案:

答案 0 :(得分:1)

我自己也有同样的问题......事实证明,如果你在设置段的宽度之前没有设置段控件的宽度,那么你在这里遇到同样的问题。这是我的代码中修复此问题的一个示例(希望它有所帮助!):

    [topSegmentedControl setFrame:CGRectMake(5.0, 5.0, frame.size.width - 26.0, topSegmentedControl.frame.size.height)];

    float width1 = round(topSegmentedControl.frame.size.width * 0.125);
    float width2 = round(topSegmentedControl.frame.size.width * 0.175);
    float width3 = round(topSegmentedControl.frame.size.width * 0.275);
    float width4 = topSegmentedControl.frame.size.width - (width1 + width2 + width3 + 3.0);

    [topSegmentedControl setWidth:width1 forSegmentAtIndex:0];
    [topSegmentedControl setWidth:width2 forSegmentAtIndex:1];
    [topSegmentedControl setWidth:width3 forSegmentAtIndex:2];
    [topSegmentedControl setWidth:width4 forSegmentAtIndex:3];