如何在UITextView中不允许输入'space'?

Tom*_*scu 3 text objective-c uitextview ios

我有一个UITextView,我不希望用户在输入的文本中有任何空格.我怎么办才不允许他使用空格键?谢谢!

Rob*_*Rob 12

你需要

  1. 将视图控制器指定为delegate文本视图(可以通过编程方式执行此操作或在Interface Builder中指定委托); 和

  2. 您的UITextViewDelegate方法shouldChangeTextInRange需要检查要插入的字符串是否包含空格:

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
        if ([text rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].location != NSNotFound) {
            return NO;
        }
        return YES;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    或者,在Swift中:

    extension ViewController: UITextViewDelegate {
        func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
            return text.rangeOfCharacter(from: .whitespacesAndNewlines) == nil
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    注意,这不是检查replacementText是否等于空格,因为这是一个不充分的检查.相反,这是检查是否发生空间的任何位置替换文本里面.这是一个重要的区别,因为可以将文本粘贴到文本视图中,该文本视图可能不等于空格,但可能在粘贴值中的某处包含空格.