2014-09-30 60 views
1

如何使用Swift以編程方式選擇NSTextField中的所有文本?使用Swift選擇NSTextField中的所有文本

爲UITextField那裏有像

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

你想獲得所有從外地代碼的文本,或者更新的NSTextField等等它看起來好像全部被選中了? – AlBlue 2014-09-30 22:02:00

回答

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) 

selectedRange Command鍵單擊,然後NSText(它的返回類型),它會跳到你其Swiftened標題,您可以查看其豐富的功能...

+0

真棒!謝謝:) – ixany 2014-10-03 11:28:47

+0

不客氣 – milos 2014-10-03 11:51:58

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 
    } 
}