Swift3 如何在swift中设置NSTextField中的最大字符串长度?

Swift3 如何在swift中设置NSTextField中的最大字符串长度?,swift3,Swift3,我喜欢设置在NSTextField中显示的文本的最大长度,这样长文本应该被截断并以两个点(..)结束 问题是不同的语言有不同的长度,即使它们有相同的字符数。 例如,让myTitle1=“Lake”//4个英文字符 让myTitle2=”我的标题" // 4个汉字 让myTitle3=“美丽的湖泊”//16个英文字符 我喜欢以上三个标题在NSTestField中以类似(如果不是完全相同)的长度显示,如下所示: “湖” "我的..“ “一个是……” 有什么办法吗 谢谢func textField(t

我喜欢设置在NSTextField中显示的文本的最大长度,这样长文本应该被截断并以两个点(..)结束

问题是不同的语言有不同的长度,即使它们有相同的字符数。
例如,让myTitle1=“Lake”//4个英文字符
让myTitle2=”我的标题" // 4个汉字
让myTitle3=“美丽的湖泊”//16个英文字符

我喜欢以上三个标题在NSTestField中以类似(如果不是完全相同)的长度显示,如下所示: “湖”
"我的..“
“一个是……”

有什么办法吗

谢谢

func textField(textField:UITextField,shouldchangeCharactersinrange:NSRange,replacementString:string)->Bool{
guard let text=textField.text else{return true}
让newLength=text.characters.count+string.characters.count-range.length
如果(textField==myTitle1){

return newLength这有点晚了,但是对于其他正在寻找Answare的人来说。你不应该手动截断文本,让操作系统为你做吧

根据需要对齐故事板中的文本字段,并将换行符设置为截断尾部

另外,将textfields compression resistance设置为一个较低的值,否则textfield边框将被推送,而不是显示文本


但是该控件用于输入,所以当用户输入其余字符时,您会如何处理它们?我在自定义选项卡视图中将其用作标题。谢谢。但是文本的长度是可变的。如何在我的代码中调用此函数?如果您使用textField,则上面的代码正在工作。有关NSTextField(MacOS)的问题,您正在回复有关iOS UITextField的信息。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    guard let text = textField.text else { return true }
    let newLength = text.characters.count + string.characters.count - range.length
     if(textField == myTitle1){
        return newLength <= 4
     }else if(textField == myTitle2){
       return newLength <= 4
     }else{
       return newLength <= 16
   }
    return true // Bool
}