ios - 当 UITextField 达到最大字符数时,键盘上的“完成”按钮将不起作用

标签 ios swift uitextfield

我使用以下代码限制文本字段中允许的字符数:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
  let newLength = (textField.text!).characters.count + string.characters.count - range.length
  return newLength <= 10
}

这很好用。但当输入 10 个字符后,按“完成”无效,并且不会关闭键盘。

我将以下行放在 return newLength <= 10 之前调试:

print("textField.characters.count = \((textField.text!).characters.count), string.characters.count = \(string.characters.count)., range.length = \(range.length). So newLength = \(newLength)")

这些是结果(每行在输入字符后出现):

textField.characters.count = 0, string.characters.count = 1., range.length = 0. So newLength = 1
textField.characters.count = 1, string.characters.count = 1., range.length = 0. So newLength = 2
textField.characters.count = 2, string.characters.count = 1., range.length = 0. So newLength = 3
textField.characters.count = 3, string.characters.count = 1., range.length = 0. So newLength = 4
textField.characters.count = 4, string.characters.count = 1., range.length = 0. So newLength = 5
textField.characters.count = 5, string.characters.count = 1., range.length = 0. So newLength = 6
textField.characters.count = 6, string.characters.count = 1., range.length = 0. So newLength = 7
textField.characters.count = 7, string.characters.count = 1., range.length = 0. So newLength = 8
textField.characters.count = 8, string.characters.count = 1., range.length = 0. So newLength = 9
textField.characters.count = 9, string.characters.count = 1., range.length = 0. So newLength = 10

一切都很好。但是,当我按下“完成”时,而不是关闭键盘并调用我连接到“退出时结束”的函数,屏幕上没有任何反应,我得到了这个:

textField.characters.count = 10, string.characters.count = 1., range.length = 0.所以newLength = 11 .

重复按“完成”会一遍又一遍地吐出最后一行。有人可以帮我按“完成”关闭键盘吗?

最佳答案

Try with the following code:-
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
   if(range.length + range.location > textField.text.length)
            {
                return NO;
            }

            NSUInteger newLength = [textField.text length] + [string length] - range.length;
            return newLength <= 10;
}

关于ios - 当 UITextField 达到最大字符数时,键盘上的“完成”按钮将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33082350/

相关文章:

ios - iOS 7.1 中 UISearchBar 的 UITextField

iOs Segue 动画从左到右(水平)

ios - Swift,谷歌地图适用于所有标记

swift - 使用 multipartFormData 上传图像时 Alamofire 请求正文为零

ios - 如何在 Unity 导出的 iOS App 中使用 Swift Pod

ios - 为什么辞去 First Responder 不隐藏键盘?

ios - 无法在 View Controller 背景中显示完整图像

ios - 如何根据文本使 UICollectioncell 宽度动态

ios - 在 didSelectItemAt 中选择单元格时取消选择 cellForItemAt 中的单元格

iphone - 如何在出现键盘时禁用背景