1

サイズの異なるセグメントを持つセグメント化されたコントローラーを作成しました。確認すると、セグメント コントローラーに異なる幅サイズのセグメントがあることがわかりますが、最大のセグメントに触れようとすると、セグメントの左側の部分にしか触れられません。(おそらく最初の 50 ピクセルの部分だけですが、セグメントは 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];
}
4

1 に答える 1

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];
于 2012-05-25T16:26:20.947 に答える