возврат клавиатуры при вводе одного символа в текстовое поле - PullRequest
0 голосов
/ 09 февраля 2012

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

Спасибо.

Ответы [ 5 ]

4 голосов
/ 09 февраля 2012

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

@interface TheDelegateClass : NSObject <UITextFieldDelegate>

Шаг 2. В своей реализации переопределите метод - (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replaceString: (NSString *) string

- (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];
1 голос
/ 09 февраля 2012

вы должны написать свой код в текстовом методе делегата

- (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 голосов
/ 09 февраля 2012
- (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
   }

}
0 голосов
/ 09 февраля 2012

Я думаю, это то, что вы ищете?

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

0 голосов
/ 09 февраля 2012

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

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

и внедрить

- (void) changeText: (id) sender;
{
    if ([textField.text length] == 1) 
    {
        [textField resignFirstResponder];
    }        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...