4

iPhone の UISegmentedControl クラスに関する簡単な質問です。

うまくいけば、2 つのセグメントがあるデフォルトの状態で、ユーザーが現在選択されているセグメントをタップしても、セグメント化されたコントロールがトグルすることに気付いた人もいるでしょう。

その動作を無効にし、ユーザーが選択したセグメントを押してもトグルしないアプリで UISegmentedControls を見てきました。つまり、Apple の iTunes Store アプリです。

私が見落としているこの動作を防ぐ簡単な方法はありますか、または valueChanged にロジックを書き込む必要がありますか?

現在選択されているセグメントを無効にし、選択されていないセグメントを有効にしようとしましたが、これにより、必要のないときにコントロールの外観が変わるようです。

何か案は?

4

4 に答える 4

8

UISegmentedControl.h ヘッダー ファイルを調べます (簡単な方法は、XCode で Command を押したまま "UISegmentedControl" をダブルクリックすることです)。

そこには、_segmentedControlFlags構造体にいくつかの項目が表示されます。UISegmentedControl でカテゴリを作成すると、dontAlwaysToggleForTwoSegmentsを含むこれらの要素のいずれかを操作できます。これは、名前から推測できるように、探しているものです。

これは API ヘッダーに記載されているため (実際のドキュメントにはありません)、安全に使用できます。

于 2009-03-11T23:23:16.890 に答える
4

3.0 では、「_segmentedControlFlags 」が「 momentary」プロパティに変更されました。これは、引き続き UISegmentedControl.hヘッダー ファイルにあります。

于 2009-07-20T20:59:29.530 に答える
1

カテゴリを介して _segmentedControlFlags にアクセスすることは、プライベート API の使用と見なされ、Apple による使用許諾契約に違反していることを今日学ばなければなりませんでした。今まで、カテゴリは、誰かのひどいクラス設計を修正するための言語機能だと思っていました...

于 2009-12-09T03:14:35.367 に答える