3

を配置しNSSearchFieldて境界線を設定するとnone、クリアボタンがクリックできない、つまりクリックしても応答しないことがわかりました。境界線を再度設定すると、正常に機能します。

ここに画像の説明を入力

私はこれを数時間デバッグしてきましたが、境界線をなしに設定すると、テキスト エディターの幅が拡大し、クリア ボタンが隠れる (覆われる) ことがわかりました。

スクリーンショット

ここに画像の説明を入力

階層デバッグのスクリーンショットを表示

ここに画像の説明を入力

再現する手順:

  1. 空のココア プロジェクト/アプリを作成する
  2. を配置NSSearchField
  3. 境界線をなしに設定
  4. アプリを実行し、検索フィールドに入力してクリアボタンをクリックしてみてください

これはバグですか?それとも、そのように振る舞うことを意図していますか?

注: カカオ開発の初心者

4

3 に答える 3

0

コードで作成された NSSearchField でも同じ問題がありました。サブクラスで NSSearchFieldCell メソッドをオーバーライドすることで解決しました:

 - (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength
{
    NSRect newRect = aRect;
    newRect.size.width -= (NSWidth([self searchButtonRectForBounds:aRect]) + NSWidth([self cancelButtonRectForBounds:aRect]));
    [super selectWithFrame:newRect inView:controlView editor:textObj delegate:anObject start:selStart length:selLength];
}

このメソッドは、フィールドのテキスト領域をマウスでクリックした後に呼び出されます。また、挿入ポイントの色を設定するのにも適しているようです。

于 2016-08-16T09:06:31.087 に答える