Search code examples
iosswift3uitextviewios-keyboard-extension

iOS Swift Enable Only Backspace Key in Keyboard


In my app I'm having text limits for some textView. For example, In description I'm having text limit of 10000. When textView contains more than 10000 character I just need to enable backspace key in keyboard and need to disable all other keys in keyboard, is it possible. Here is my tried code:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText string: String) -> Bool {
    if(textView == DescriptionText)
    {
      if range.length + range.location > (self.DescriptionText.text?.characters.count)!
      {
            return false
      }
      else if range.location == 0 && string == " "
      {
            return false
      }
      let NewLength = (self.DescriptionText.text?.characters.count)! - range.length
      return NewLength <= 9999
      }
      else
      {
          if range.location == 0 && string == " "
          {
                return false
          }
          return true
      }
    }

Solution

  • In textfieldShouldChange add the following:

    if(range.length + range.location > textField.text.length)
        {
            return NO;
        }
    
        NSUInteger newLength = [textField.text length] + [string length] - range.length;
    
        return newLength <= 10000;