문제

악센트 캐릭터 (é î ü 등)와 같은 모든 단일 문자가없는 비트 맵 글꼴이있어 게임의 고등식 테이블에 사용자 이름을 표시하는 데 사용하는 "¥"또는 ©와 같은 기호가 있습니다.

Uikit 키보드를 특정 문자로 제한하거나 Uitextfield의 특정 문자 만 허용 할 수 있습니까? 아니면 내 입력 메커니즘을 굴려야합니까? 나는 생각하고 구식 학교, 아케이드 스타일, 한 번에 한 글자 "the"thing "은 괜찮을 것입니다.

도움이 되었습니까?

해결책

다음 uitextfielddelegate 메소드를 사용해 볼 수 있습니다.

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

다른 팁

Intregus가 언급 한 uitextfielddelegate 메소드를 사용하면 다음을 쉽게 수행 할 수 있습니다.

- (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;

인터페이스 빌더를 사용하면 모든 기능에서 "편집 변경"이벤트를 연결하고 얻을 수 있습니다. 이제 거기에서 길이를 확인할 수 있습니다

- (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