如何在swift中取消选择TextField的内容

时间:2015-05-23 00:12:46

标签: xcode macos swift

我有一个简单的桌面应用程序,当窗口加载时应该聚焦TextField。我有这个工作,但有点烦人的是,将用户内容加载到TextField后,该字段的全部内容将自动被选中。用户可能想要开始编辑内容,但他们很少/永远不想一次全部替换它(想象一下文本编辑器这样做,看看我的意思)。

我看到selectAll有一个Action:但我想要的是selectNone的相反动作:

我尝试将nil传递给selectText方法,但这不起作用:

textField.selectText(nil)

我在StackOverflow上发现了一些提到selectedTextRange的答案,但是这看起来已经过时了,因为Xcode 6.3并没有将它识别为TextField上的有效属性。

任何人都可以解释我是怎么做到的吗?

2 个答案:

答案 0 :(得分:1)

自从我将NSTextFields处理到这个级别以来已经有一段时间了(这些天我主要在iOS工作)。

经过一番挖掘后,我在网上发现了这个:

NSText* textEditor = [window fieldEditor:YES forObject:textField];
NSRange range = {start, length};
[textEditor setSelectedRange:range];

窗口是包含字段textField的窗口。

这需要字段编辑器管理您的字段,只需先使用selectText:sender方法选择字段的整个文本即可完成。

答案 1 :(得分:0)

这是我根据Duncan C发布的最终快速代码:

if let window = NSApplication.sharedApplication().mainWindow {
    let textEditor = window.fieldEditor(true, forObject: textField)!
    let range = NSRange(0..<0)
    textEditor.selectedRange = range
}