У меня есть приложение, в котором я добавляю новый элемент в представление таблицы, когда пользователь нажимает кнопку редактирования, которая показывает ячейку текстового поля внизу таблицы, аналогично встроенному приложению «Уведомления». Мне нужно настроить таблицу, когда отображается клавиатура, чтобы она не мешала, когда в таблице много строк. Я делаю это, подписываясь на уведомление, когда клавиатура показывает:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardDidShow:)
name: UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardDidHide:)
name: UIKeyboardDidHideNotification
object:nil];
}
...
...
-(void) keyboardDidShow: (NSNotification *)notif
{
// If keyboard is visible, return
if (self.keyboardVisible)
{
return;
}
// Get the size of the keyboard.
NSDictionary* info = [notif userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
// Adjust the table view by the keyboards height.
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0);
NSIndexPath *path = [NSIndexPath indexPathForRow:self.newsFeeds.count inSection:0];
[self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];
self.keyboardVisible = YES;
}
Однако таблицу, в которую я разрешил пользователю добавить строку, также можно коснуться, и новое представление будет отправлено в приложение. Это представление также имеет текстовое представление, и когда пользователь нажимает на него, а клавиатура показывает, что первый контроллер представления все еще получает уведомление, что вызывает сбой.
Как я могу игнорировать уведомление или заставить его не срабатывать при нажатии нового представления?