如何使用Swift以編程方式選擇NSTextField中的所有文本?使用Swift選擇NSTextField中的所有文本
爲UITextField那裏有像
textField.selectedTextRange = textField.textRangeFromPosition(...)
如何使用Swift以編程方式選擇NSTextField中的所有文本?使用Swift選擇NSTextField中的所有文本
爲UITextField那裏有像
textField.selectedTextRange = textField.textRangeFromPosition(...)
的方法試試這個在操場:
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)
上selectedRange
Command鍵單擊,然後NSText
(它的返回類型),它會跳到你其Swiftened標題,您可以查看其豐富的功能...
更好的解決方案:
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
}
}
你想獲得所有從外地代碼的文本,或者更新的NSTextField等等它看起來好像全部被選中了? – AlBlue 2014-09-30 22:02:00