2016-07-26 16 views

答えて

3

これには2つの部分があります。まず、適切なキーボードの種類を設定することにより、最初の場所で入力されることから、非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に設定する必要はありません。デフォルトの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 
} 
関連する問題