Один из способов закончить редактирование, нажав вне textView, не совсем тривиален. Выбор других текстовых представлений или текстовых полей или активация навигационного элемента управления вызовет ...
- (void)textViewDidEndEditing:(UITextView *)textView
... для любого объекта, который вы указали в качестве делегата textView. Вы можете вызвать это самостоятельно, позвонив ...
- (BOOL)endEditing:(BOOL)force
... в представлении, содержащем ваше текстовое поле.
Предположим, у меня есть UITextView внутри UITableViewCell (внутри UITable). Я хочу, чтобы редактирование заканчивалось нажатием на таблицу. Я мог бы сделать это:
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapTable)];
[[self tableView] addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
}
- (void)didTapTable
{
[[self tableView] endEditing:YES];
}
Теперь, когда я нажимаю на свою таблицу, я заканчиваю редактирование. И, как уже говорили другие, в textViewDidEndEditing
я должен обязательно позвонить [textView resignFirstResponder];