【发布时间】:2015-06-17 06:39:04
【问题描述】:
我想限制NSTextField 上的字符输入,即不允许出现的字符甚至不会出现。我发现的关于这个主题的大部分内容都是仅在文本输入完成或使用仍然允许字符出现的NSFormatter 后验证的解决方案。
到目前为止,我想出了这个解决方案,子类化NSTextField:
class RestrictedTextField : NSTextField
{
static let VALID_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'-.& ";
override func textDidChange(notification:NSNotification)
{
for c in stringValue
{
if (RestrictedTextField.VALID_CHARACTERS.rangeOfString("\(c)") == nil)
{
stringValue = stringValue.stringByReplacingOccurrencesOfString("\(c)", withString: "", options: .LiteralSearch, range: nil);
break;
}
}
}
}
它可以工作,但并不是真正的最佳选择,因为如果尝试输入无效字符,文本光标仍会移动一个空格。我也认为循环不应该是必要的,所以我想知道有人知道一个更优雅的解决方案吗?
【问题讨论】:
标签: macos swift cocoa nstextfield