2012-04-20 10 views
1

異なるサイズのセグメントを持つセグメントコントローラを作成しました。 私はセグメントのコントローラが異なる幅のセグメントを持っていることを確認しますが、最大のセグメントをタッチしようとすると、セグメントの左の部分にのみ触れることができます。 (たぶん最初の50ピクセルの部分ですが、セグメントは160ピクセルです)。セグメントのタッチ可能な領域をどのように設定できますか?UISegmentedControlセグメントサイズタッチ検出

//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

私はこの同じ問題を自分で持っていた...それはあなたがそれのセグメントの幅を設定する前に、セグメントコントロール自体の幅を設定しない場合、あなたはここで、この同じ問題を取得することが判明しました。これは私のコードでこれを修正した例です(助けてください!):

[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]; 
関連する問題