NSTextField
は、Macアプリケーションで12.4
と3.6
のような数字とピリオドを受け入れるようにしています。小数点(#。#)の数字と期間のみを受け入れるようにNSTextFieldを強制する
他のSOの質問を確認した後、私はかなり近づいているように感じますが、私はそれを得られません。以下のコードは、.
文字を許可しないという点を除いて動作します。 true
を返し、.
と入力しても私に鳴らさないが、その文字をフィールドに表示させない。
class decimalFormatter: NumberFormatter {
override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer<NSString?>?, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {
//Allows the text to be deleted
if partialString.isEmpty {
return true
}
//Check for #.# numbers
let charSet = NSCharacterSet(charactersIn: "1234567890.").inverted
if partialString.rangeOfCharacter(from: charSet) != nil{
NSBeep()
return false
}else{
return true
}
}
}
私は間違っていると思いますか?
http://stackoverflow.com/a/39458375/2303865 –