2014-09-30 3 views
1

Как я могу программно выбрать весь текст в NSTextField с помощью Swift?Выделить весь текст в NSTextField с помощью Swift

Для UITextField Theres метод как

textField.selectedTextRange = textField.textRangeFromPosition(...) 
+0

Вы хотите получить весь текст из поля в коде, или обновить NSTextField так что кажется, что все это выбрано? – AlBlue

ответ

1

Попробуйте в игровой площадки:

import XCPlayground 
import AppKit 

let view = NSView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) 

XCPShowView("view", view) 

let txtf = NSTextField(frame: CGRect(x: 50, y: 50, width: 200, height: 50)) 

view.addSubview(txtf) 

txtf.stringValue = "falling asleep at the keyboard..." 

txtf.selectText(nil) // Ends editing and selects the entire contents of the text field 

var txt = txtf.currentEditor() // returns an NSText 

txt.selectedRange // --> (0,33) 

Command-клик на selectedRange, затем на NSText (тип его возврата), который будет прыгать вас его Swiftened header, где вы можете проверить его богатую функциональность ...

+0

потрясающий! спасибо :) – ixany

+0

добро пожаловать – milos

1

Лучшее решение:

import Cocoa 

class TextFieldSubclass: NSTextField { 
    override func mouseDown(theEvent: NSEvent) { 
     super.mouseDown(theEvent) 
     if let textEditor = currentEditor() { 
      textEditor.selectAll(self) 
     } 
    } 
} 

Или для точного выбора:

import Cocoa 

class TextFieldSubclass: NSTextField { 
    override func mouseDown(theEvent: NSEvent) { 
     super.mouseDown(theEvent) 
     if let textEditor = currentEditor() { 
      textEditor.selectedRange = NSMakeRange(location, length) 
     } 
    } 
} 

работает для меня:

import Cocoa 

class TextFieldSubclass: NSTextField { 
    override func becomeFirstResponder() -> Bool { 
     let source = CGEventSourceCreate(CGEventSourceStateID.HIDSystemState) 
     let tapLocation = CGEventTapLocation.CGHIDEventTap 
     let cmdA = CGEventCreateKeyboardEvent(source, 0x00, true) 
     CGEventSetFlags(cmdA, CGEventFlags.MaskCommand) 
     CGEventPost(tapLocation, cmdA) 
     return true 
    } 
} 
Смежные вопросы