سؤال

لدي خط الصورة النقطية التي لا تحتوي على كل حرف مفرد، مثل الأحرف المعلمة (É î Ü Ü وما إلى ذلك) أو الرموز مثل "" أو © التي أستخدمها لعرض أسماء المستخدمين في جدول أعلى الدرجات للحصول على لعبة.

هل من الممكن الحد من لوحة المفاتيح Uikit إلى أحرف معينة، أو السماح فقط بأحرف معينة في UITEXTFILD؟ أو هل يجب علي لفة آلية الإدخال الخاصة بي؟ أنا أفكر في المدرسة القديمة وأسلوب الممرات وحرف واحد في وقت واحد "شيء" سيكون على ما يرام.

هل كانت مفيدة؟

المحلول

يمكنك محاولة استخدام طريقة UITEXTFLEGATE التالية:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

نصائح أخرى

باستخدام الطريقة UITEXTFieldDelegate التي ذكرتها Intregus، يمكنك القيام بذلك بسهولة تماما:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // Only characters in the NSCharacterSet you choose will insertable.
    NSCharacterSet *invalidCharSet = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefgABCDEFG"] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""];
    return [string isEqualToString:filtered];
}

حاول استخدام UIKeyboardTypeNamePhonePad من اجلك UITextField. وبعد لديها فقط الحروف والأرقام على ذلك:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

باستخدام Builder Interface يمكنك الارتباط والحصول على الحدث "التحرير غير" في أي من وظيفتك. الآن هناك يمكنك وضع التحقق من الطول

- (IBAction)onValueChange:(id)sender 
{
    NSString *text = nil;
    int MAX_LENGTH = 20;
    switch ([sender tag] ) 
    {
        case 1: 
        {
            text = myEditField.text;
            if (MAX_LENGTH < [text length]) {
                myEditField.text = [text substringToIndex:MAX_LENGTH];
            }
        }
            break;
        default:
            break;
    }

}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top