2013-02-02 22 views
12

wie man NSTextField wirklich einzige Zeile machen?machen nstextfield single line

Ich habe ein Textfeld programmgesteuert erstellt. Wenn die Eingabetaste gedrückt wird, wird der gesamte Text ausgewählt. aber ich kann immer noch mehrere Textzeilen einfügen. Und wenn ich Pfeil nach rechts oder Pfeil nach unten drücke, scrolle ich zur nächsten Zeile.

Es gibt keine diese Probleme, wenn ich IB verwende und den "Single Line Mode" einstellen, aber ich konnte nicht die richtige Methode finden, um es programmgesteuert einzustellen.

+0

IB hat eine Menge Magie Standardeinstellung, können Sie manchmal die xib untersuchen, welche Schlüsselwertepaare sehen gesetzt –

+1

@GradyPlayer Ja, es ist, das Problem ist, ich es programmatisch festlegen möchten. – Jensen

Antwort

5

Dies funktioniert für mich, wenn Steuerelemente programmgesteuert zu erstellen:

[myTextField.cell setWraps:NO]; 
[myTextField.cell setScrollable:YES]; 

Beachten Sie, dass den direkten Zugriff auf NSControl Zelle seit OS X entmutigt wurde 10.10 Einführung:

Allmähliche deprecation von NSCell

Mac OS X 10.10 unternimmt einen weiteren Schritt in Richtung der möglichen Verschrottung von Zellen. Direkter Zugriff auf die Zelle eines Steuerelements wird abgeraten, und Methoden, die es ermöglichen, wird es in einer folgenden -Version formell veraltet. Eine Vielzahl von APIs auf Zellebene wurden zu verschiedenen Control-Unterklassen befördert, um zellenfreien Zugriff auf wichtige Funktionen zu ermöglichen. NSLevelIndicator, NSTextField, NSSearchField, NSSlider, und NSPathControl haben alle neue Eigenschaften für diesen Zweck. Zellenbasierte NSTableViews sind jetzt veraltet und View-basierte NSTableViews sollten stattdessen verwendet werden. Matrix-basierte NSBrowser werden auch zugunsten der Item-basierten Schnittstelle zugunsten veraltet.

https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/

+1

Wissen Sie, ob es eine Möglichkeit gibt, das Textfeld scrollbar zu machen, ohne auf seine Zelle zuzugreifen? Das Aufrufen von 'setUsesSingleLineMode:' auf dem Textfeld (im Gegensatz zur Zelle) macht es nicht scrollbar. – Dalmazio

+0

Also? Wie kann das gemacht werden, wenn das veraltet ist? –

+0

Steuerung + Geben Sie Textfeld erneut zwei Zeilen ein. – frank