2011-11-25 2 views
3

Я работаю над приложением, которое имеет tableView с textField в правой части каждой ячейки (более 20 ячеек). Я создал пользовательские ячейки для каждой строки, кроме последней. В последней строке есть только кнопка.Скрыть клавиатуру/resignFirstResponder принудительно

Теперь я хочу позвонить resignFirstResponder на кнопку.
Что мне делать Пожалуйста, помогите?

+0

Таким образом, ур получать к/б на щелчку TextFields и и хотят уйти й к/b на этой кнопке нажмите.? – mAc

+0

+1 для хорошего вопроса :) – mAc

ответ

2

Вам нужно будет отслеживать, какое текстовое поле, в котором камера имеет первого ответчика и уходит в отставку.

[myCellTextField resignFirstResponder]; 
2

Возможно, вы хотите отслеживать текстовое поле с помощью клавиатуры. Внесите в ваш контроллер протокол <UITextFieldDelegate> и установите контроллер в качестве каждого из делегатов текстовых полей. Написать textFieldDidBeginEditing: метод, как это так, установив переменную экземпляра с именем currentTextField:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    currentTextField = [textField retain]; 
} 

Затем в своем действии на кнопку запуска [currentTextField resignFirstResponder].

1

Ответ Aopsfan, вероятно, является лучшим решением. Однако, чтобы добавить к нему (как я не могу комментировать), не забудьте освободить объект:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if (currentTextField != nil) { 
     [currentTextField release]; 
    } 
    currentTextField = [textField retain]; 
} 

еще лучше использовать @ собственности и @synthesize-х, так что во время выполнения может сделать управление памятью для вас.

[ViewController] .h

@property (nonatomic, retain) UITextField* currentTextField; 

[ViewController] .м

@synthesize currentTextField = _currentTextField; 

- (void)viewDidLoad|Appear { 
    self.currentTextField = nil; 
} 

- (void) dealloc { 
    [_currentTextField release], _currentTextField = nil; 
    ... 
    [super dealloc]; 
} 

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    self.currentTextField = textField; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (self.currentTextField) { 
     [self.currentTextField resignFirstResponder]; 
    } 
} 
Смежные вопросы