3

絵文字のみを含むテキスト フィールドがあります。ユーザーのキーボードを絵文字入力のみに制限する、つまり他のキーボードを無効にすることはできますか?

4

2 に答える 2

2

キーボードの種類は、Interface Builder で、またはこのガイドを使用してプログラムで設定できます。

typedef enum {
    UIKeyboardTypeDefault,                // Default type for the current input method.
    UIKeyboardTypeASCIICapable,           // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
    UIKeyboardTypeNumbersAndPunctuation,  // Numbers and assorted punctuation.
    UIKeyboardTypeURL,                    // A type optimized for URL entry (shows . / .com prominently).
    UIKeyboardTypeNumberPad,              // A number pad (0-9). Suitable for PIN entry.
    UIKeyboardTypePhonePad,               // A phone pad (1-9, *, 0, #, with letters under the numbers).
    UIKeyboardTypeNamePhonePad,           // A type optimized for entering a person's name or phone number.
    UIKeyboardTypeEmailAddress,           // A type optimized for multiple email address entry (shows space @ . prominently).

    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated

  } UIKeyboardType;

絵文字キーボードは別の言語キーボードとして設定されているため、プログラムで設定することはできません。ユーザーが設定アプリで設定します。

面倒ではありますが、ユーザーに警告するか、アプリ内にヘルプ ファイルを用意して、アプリで最高のエクスペリエンスを得るには、それを有効にする必要があることを伝えることができると思います。

また、Apple は現在、独自のカスタム絵文字キーボードを作成するアプリを拒否していると私は信じていることに注意してください。それは現在、メイン OS の一部であるためです.

于 2012-12-22T22:20:55.867 に答える
1

現在、要件があなたと同じで、解決策を検索しようとしているプロジェクトに取り組んでいますが、見つからなかったので、うまく機能するコードを書きました。うまくいけば、それはあなたにも役立ちます。遅すぎることはわかっていますが、将来的に役立ちます。

私の解決策は

#pragma mark validate emoji's

-(void)validateEmoji
{
BOOL lowerCaseLetter=0,upperCaseLetter= 0,digit=0,specialCharacter=0;
    for (int i = 0; i < [emojiTextField.text length]; i++)
    {
        unichar c = [emojiTextField.text characterAtIndex:i];
        if(!lowerCaseLetter)
        {
          lowerCaseLetter = [[NSCharacterSet     lowercaseLetterCharacterSet] characterIsMember:c];
        }
        if(!upperCaseLetter)
        {
            upperCaseLetter = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:c];
        }
        if(!digit)
        {
            digit = [[NSCharacterSet decimalDigitCharacterSet] characterIsMember:c];
        }
        if(!specialCharacter)
        {
            specialCharacter = [[NSCharacterSet symbolCharacterSet] characterIsMember:c];
        }
    }

    if(lowerCaseLetter || upperCaseLetter || digit || specialCharacter)
    {
        // if textfield contains special characters,lowercase,uppercase,numeric digits
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                        message:@"Please select only emoji's from Keyboard"
                                                       delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        emojiTextField.text=@"";
        [emojiTextField becomeFirstResponder];
        emojiTextFieldFlag = false;
    }
    else
    {
        emojiTextFieldFlag = true;
        // emoji is selected do whatever you want.
    }

}

#pragma mark TextField delegate methods
-(BOOL)textFieldShouldReturn:(UITextField *)textField
 {
if ([textField isEqual:emojiTextField])
{
    [emojiTextField resignFirstResponder];
    NSLog(@"%@",emojiTextField.text);
    // make it blank for next click when comes back
    appdelegate.appdelegateEmojiTextFieldClicked =@"";
    if (emojiTextFieldFlag)
    {
        [self saveEmojiJsonParsing];
    }
    else
    {
        [emojiTextField becomeFirstResponder];
    }
  }
  return YES;
  }

-(void)textFieldDidEndEditing:(UITextField *)textField
 {
   if ([textField isEqual:emojiTextField])
   {
    [self validateEmoji];
   }
 }
于 2015-04-28T09:08:11.873 に答える