2010-01-15 62 views
5

Tôi có UITextFields trên bàn để nhập giá trị. Một số trường này chỉ chấp nhận số. Tôi đang sử dụng UIKeyboardTypeNumbersAndPunctuation cho loại bàn phím và shouldChangeCharactersInRange để lọc các ký tự.Làm thế nào để ngăn bàn phím thay đổi từ số thành bảng chữ cái khi phím cách chạm được?

Ngoài ra, tất cả các điều chỉnh bị vô hiệu hóa:

textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
textField.autocorrectionType = UITextAutocorrectionTypeNo; 
textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 

Trên lĩnh vực chỉ số, khi chìa khóa không gian được xúc động, những thay đổi bàn phím để Alphabet. Tôi biết rằng đây là hành vi mặc định. Tôi muốn bỏ qua phím khoảng trắng và không muốn thay đổi loại bàn phím.

Có cách nào để thay đổi hành vi mặc định này không?

PS: các loại bàn phím số khác không phải là một tùy chọn. Tôi cần dấu chấm câu!

Cảm ơn

Trả lời

4

Tôi không nghĩ rằng có thể sửa đổi hành vi bàn phím.

Tuy nhiên, bạn có thể thực hiện các textField:shouldChangeCharactersInRange:replacementString: từ giao thức UITextFieldDelegate để đánh chặn không gian (và dấu nháy đơn) như thế này và có vẻ như để làm việc:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if ([string isEqualToString:@" "] || [string isEqualToString:@"'"]) { 
     NSMutableString *updatedString = [NSMutableString stringWithString:textField.text]; 
     [updatedString insertString:string atIndex:range.location]; 
     textField.text = updatedString; 
     return NO; 
    } else { 
     return YES; 
    } 
} 
Các vấn đề liên quan