0

すべての UISegmentedControl の外観をグローバルに設定しています。ただし、これを行うと、無効な状態が壊れることに気付きました。

titleTextAttributes を変更する必要があるコードは次のとおりです。

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIFont boldSystemFontOfSize:12], UITextAttributeFont,
                                [UIColor whiteColor], UITextAttributeTextColor,
                                [UIColor colorWithRed:0x49/255.0 green:0x49/255.0 blue:0x49/255.0 alpha:1], UITextAttributeTextShadowColor,
                                [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset,
                                nil];
[[UISegmentedControl appearance] setTitleTextAttributes:attributes forState:UIControlStateNormal];

これで問題なく動作し、すべてのセグメント化されたコントローラーが更新されました。

しかし、setEnabled:forSegmentAtIndex: で無効にした項目は無効にならず、クリック可能です。なぜこれが起こるのですか?それらを再び無効にするにはどうすればよいですか。無効状態にも適用しようとしましたが、機能しません。

[[UISegmentedControl appearance] setTitleTextAttributes:attributes forState:UIControlStateDisabled];
4

1 に答える 1

0

UISegmentedControl のグローバルな外観を設定することは、UIControlStateDisabled を尊重しないため、最善の方法ではないようです。

何も機能していないので UIControlStateDisabled を使用する必要があると思いましたが、背景を直接設定すると機能するようです。そのため、背景を初期化する UISegmentedControlExtended クラスを作成したところ、setEnabled 関数が正常に動作するようになりました。

于 2012-11-28T16:14:19.610 に答える