2016-07-26 2 views
0

У меня есть старый столбец базы данных, который поддерживает только набор символов ASCII. Мне нужен метод, который предотвращает ввод или вставку символов, отличных от ASCII, в UITextView. Мне нужно отфильтровать emojis и все остальные символы Unicode.Предотвращение захвата символов, отличных от ASCII, в UITextView

ответ

3

Это две части. Во-первых, предотвратить не-ASCII символы из набираясь в первую очередь, установив тип клавиатуры соответственно:

textView.keyboardType = UIKeyboardTypeASCIICapable; 

Во-вторых, предотвратить не-ASCII символы, вставленные из другого приложения по реализации этого метода делегата:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    // trim any non-ASCII characters 
    NSString* s = [[text componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithRange:NSMakeRange(0, 128)].invertedSet] componentsJoinedByString:@""]; 

    // manually replace the range in the textView 
    textView.text = [textView.text stringByReplacingCharactersInRange:range withString:s]; 

    // prevent auto-replacement 
    return NO; 
} 
0

Это то, что я использую для UITextField, просто альтернативное решение, это работает как по умолчанию, так и по индивидуальным клавишам и отключает скопирование emojis. Не нужно устанавливать тип клавиатуры в ascii, поскольку он отключает emojis клавиатуры iOS по умолчанию.

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 
{ 
    //This is universal solution works on default as well as custom keyboards like SwiftKeyplus it will diallow pasting emoji 
    if !string.canBeConvertedToEncoding(NSASCIIStringEncoding) 
    { 
     return false 
    } 

    return true 
} 
Смежные вопросы