2012-02-09 2 views
0

Я разрабатываю приложение iphone, в котором мне нужно вернуть клавиатуру, как только я набираю только один символ в текстовом поле. Как это сделать, пожалуйста, предложите некоторое решение.возвращает клавиатуру при вводе одного символа в текстовое поле

Спасибо.

ответ

4

Шаг 1: Создайте класс, реализующий UITextFieldDelegate протокола

@interface TheDelegateClass : NSObject <UITextFieldDelegate> 

Шаг 2: В вашей реализации, переопределить метод - (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) строка

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    // newString is what the user is trying to input. 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    if ([newString length] < 1) { 
     // If newString is blank we will just ingore it. 
     return YES; 
    } else 
    { 
     // Otherwise we cut the length of newString to 1 (if needed) and set it to the textField. 
     textField.text = [newString length] > 1 ? [newString substringToIndex:1] : newString; 
     // And make the keyboard disappear. 
     [textField resignFirstResponder]; 
     // Return NO to not change text again as we've already changed it. 
     return NO; 
    } 
} 

Шаг 3: Установите экземпляр класса делегата в качестве делегата UITextField.

TheDelegateClass *theDelegate = [[TheDelegateClass alloc] init]; 
[theTextField setDelegate:theDelegate]; 
+0

Спасибо за предложение, это работает. –

0

добавить уведомление в TextField создании кода

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeText:) name:UITextFieldTextDidChangeNotification object:textField]; 

и осуществлять

- (void) changeText: (id) sender; 
{ 
    if ([textField.text length] == 1) 
    { 
     [textField resignFirstResponder]; 
    }   
} 
+0

Спасибо за помощь, но я хочу, чтобы вернуть клавиатуру, как только я вхожу только один символы в текстовом поле заменяется без нажатия на кнопку сделано –

0

Я предполагаю, что это хочу, чтобы вы ищете?

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    [add your method here]; 
    return YES; 

} 

Или, если вы хотите, чтобы уйти в отставку, как только он начинает редактировать вы можете поместить этот код в textFieldDidBeginEditing: метод делегата

[textField resignFirstResponder]; 

Проверить эту ссылку

https://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

1

вам необходимо написать свой код в текстовом делететете

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if([textField.text length] == 1){ 
    [textField resignFirstResponder]; 
} 

, а затем проверить длину строки в textFieldDidBeginEditing

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 

    if([textField.text length] == 1){ 
    [textField resignFirstResponder]; 
} 

} 
+0

Спасибо за помощь, но я хочу, чтобы вернуть клавиатуру, как только я вхожу только один символы в текстовом поле после нажатия кнопки –

+0

, тогда напишите код в shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) строка, которую он проверяет по одному символу – Hiren

0
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if([textField.text length] == 1){ 
     [textField resignFirstResponder]; 
} 

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField 
{ 
    if([textField.text length]==1) 
    { 
     // here perform the action you want to do 
    } 

} 
Смежные вопросы