NSComboBoxの効果をcompletes
== YES、ボタンなし、numberOfVisibleItems
== 0で作成しようとしています(例:iTunesの情報ウィンドウを開く)。NSTextFieldのテキスト補完のドロップダウンを抑制する
これを達成するために、私は、デリゲートメソッドトリガー-[NSTextField complete:]
、呼び出すために-controlTextDidChange:
に自動的に補完NSTextFieldコントロールを使用しています:私はあることこの正常に動作し、唯一の問題を得ている
- (NSArray *)control:(NSControl *)control
textView:(NSTextView *)textView
completions:(NSArray *)words
forPartialWordRange:(NSRange)charRange
indexOfSelectedItem:(NSInteger *)index;
をドロップダウンの副作用が表示されます。私はそれを抑制したいが、私はこれを行う方法を見ていない。ドキュメント、インターネット、スタックオーバーフローを精査しましたが、成功しませんでした。
私はデリゲートメソッドが好きですが、それが唯一の方法であれば、サブクラス化することができます。私はライオンをターゲットにしています。そのために役立つので、ソリューションは下位互換性が必要ではありません。
userDeletedとisAutoCompletingには関連性がありません。これらの2つを1つのプロパティにマージすることで、コードをさらに単純化することができます。 – lhunath
それは当てはまりません。ユーザーが削除キーを押すと、このコードはオートコンプリートを提供しません。これはiTunesが動作するのと同じ方法です。 'isAutoCompleting'は、コントロールのテキストが変化している間、関数へのリエントリーを禁止することによって、無限ループを防ぎます。 – Dov
私が言っていることは、どちらも同じ目標を達成することです。isAutoCompletingがYESの場合、完了しません。 userDeletedがYESの場合も、完了しません。たとえば、isAutoCompletingまたはuserDeletedをYESに設定し、コードとチェックが少なくても同じ効果が得られる場合は、単一の変数「inhibitCompletion」を使用してYESに設定することもできます。 – lhunath