2008-12-01 47 views
15

Tôi muốn bàn phím ảo iPhone xuất hiện được đặt trước thành một ngôn ngữ cụ thể (ví dụ tiếng Nga) khi người dùng nhấn vào một UITextField. Có cách nào để làm điều này trong mã Cocoa?Đặt ngôn ngữ bàn phím iPhone

Trả lời

7

Đây là cài đặt do người dùng xác định và rất tiếc, không thể gây nhầm lẫn với người lập trình.

0

Không chắc chắn lý do tại sao bạn muốn làm điều này - Tôi không nói tiếng Nga, và tôi sẽ hơi lo lắng nếu bàn phím tiếng Nga đột ngột xuất hiện.

Người dùng có thể chọn ngôn ngữ họ muốn trong ứng dụng Cài đặt iPhone của họ. Sau đó, xác định bàn phím nào xuất hiện khi họ nhấn vào trường văn bản.

+5

Bạn sẽ không lo lắng nếu nó là từ điển Nga . – Nestor

+0

Vui lòng trả lời câu hỏi hoặc chỉ cần thêm nhận xét cho câu hỏi –

0

Tôi muốn làm điều này vì tôi đang viết một ứng dụng học ngôn ngữ.

Điều gì làm cho thiết lập chọn bàn phím hiện tại trên iPhone thậm chí tệ hơn (ít nhất là đối với tôi) là nó không nhớ bàn phím cho mỗi ứng dụng. Vì vậy, nếu bạn thay đổi nó cho một ứng dụng, nó vẫn là bàn phím tương tự cho ứng dụng tiếp theo bạn mở.

0

Tôi không biết về iPhone 3.0 SDK, nhưng đến 2.x, bạn không thể kiểm soát điều này. Tuy nhiên, những gì bạn có thể làm là tạo một bàn phím tùy chỉnh. Đó là nhiều công việc hơn, nhưng bạn có thể làm lại các bố trí cho mỗi ngôn ngữ.

0

Để trả lời câu hỏi về bàn phím tiếng Anh - Apple đã thiết kế cho điều đó - bạn có thể sử dụng bàn phím ASCII - bạn có thể chọn bằng: UIKeyboardTypeASCIICapable.

2

Không có vấn đề trong 3.1+. Tôi đặt cài đặt này cho 3.0:

self.searchBar.keyboardType = UIKeyboardTypeURL; 

và nút chuyển ngôn ngữ sẽ xuất hiện.

1

Bạn không thể đặt bàn phím thành bộ ký tự bạn muốn, nhưng điều tốt nhất tiếp theo là ngăn người dùng nhập ký tự từ bất kỳ bộ ký tự nào khác. Các đại biểu dưới đây làm điều này và cũng buzzes rung của iPhone khi các ký tự không chính xác được nhập vào, hoạt động tốt để nhanh chóng cảnh báo người dùng rằng họ đã chọn bàn phím sai. Này là dành cho Hàn Quốc nhưng dễ dàng sửa đổi cho các ngôn ngữ khác (xem ý kiến):

tập tin tiêu đề:

#import <Foundation/Foundation.h> 
#import <AudioToolbox/AudioToolbox.h> 

@interface KoreanOnlyInput : NSObject <UITextFieldDelegate> 
{ 
    NSMutableCharacterSet* koreanUnicode; 
} 

@end 

tập tin .m:

#import "KoreanOnlyInput.h" 

@implementation KoreanOnlyInput 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     // From http://www.unicodemap.org/ : 
     // 0x1100 - 0x11FF : Hangul Jamo (256) 
     // 0x3130 - 0x318F : Hangul Compatibility Jamo (96) 
     // 0xAC00 - 0xD7A3 : Hangul Syllables (11172) 

     koreanUnicode = [[NSMutableCharacterSet alloc] init]; 
     NSRange range; 

     range.location = 0x1100; 
     range.length = 1 + 0x11FF - range.location; 
     [koreanUnicode addCharactersInRange:range]; 

     range.location = 0x3130; 
     range.length = 1 + 0x318F - range.location; 
     [koreanUnicode addCharactersInRange:range]; 

     range.location = 0xAC00; 
     range.length = 1 + 0xD7A3 - range.location; 
     [koreanUnicode addCharactersInRange:range]; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [koreanUnicode release]; 
    [super dealloc]; 
} 

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string 
{ 
    if ([string isEqualToString:@"\n"]) 
     return YES; 

    BOOL shouldChange = YES;  
    for (int i=0; i<[string length]; i++) 
    { 
     if (![koreanUnicode characterIsMember:[string characterAtIndex:i]]) 
      shouldChange = NO; 
    } 

    if (!shouldChange) 
    { 
     AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
    } 

    return shouldChange; 
} 

@end 
Các vấn đề liên quan