У меня есть UISearchDisplayController, и он отображает результаты в виде таблицы. Когда я пытаюсь прокрутить таблицу, содержимое будет точно _keyboardHeight выше, чем должно быть. Это приводит к ложному нижнему смещению. Есть> 50 пунктов в Tableview, так что не должно быть пустое пространство, как показано нижеUISearchDisplayController Недопустимое смещение содержимого табличного представления после скрытия клавиатуры
8
A
ответ
12
Я решил эту проблему, добавив NSNotificationCenter
слушателя
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {
//this is to handle strange tableview scroll offsets when scrolling the search results
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidHide:)
name:UIKeyboardDidHideNotification
object:nil];
}
Не забудьте удалить слушателя
- (void)searchDisplayController:(UISearchDisplayController *)controller willHideSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardDidHideNotification
object:nil];
}
Регулировка Tableview contentsize в способе уведомления
- (void)keyboardDidHide:(NSNotification *)notification {
if (!self.searchDisplayController.active) {
return;
}
NSDictionary *info = [notification userInfo];
NSValue *avalue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize KeyboardSize = [avalue CGRectValue].size;
CGFloat _keyboardHeight;
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (UIDeviceOrientationIsLandscape(orientation)) {
_keyboardHeight = KeyboardSize.width;
}
else {
_keyboardHeight = KeyboardSize.height;
}
UITableView *tv = self.searchDisplayController.searchResultsTableView;
CGSize s = tv.contentSize;
s.height -= _keyboardHeight;
tv.contentSize = s;
}
12
Вот более простой и удобный способ сделать это на основе публикуемой ссылки Hlung в:
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {
[tableView setContentInset:UIEdgeInsetsZero];
[tableView setScrollIndicatorInsets:UIEdgeInsetsZero];
}
Примечания: Оригинальный ответ использует NSNotificationCenter для получения тех же результатов.
Смежные вопросы
- 1. iPhone SDK: настройка размера табличного представления UISearchDisplayController
- 2. Изменение вставки содержимого табличного представления
- 3. Предотвращение скрытия навигационной панели UISearchDisplayController
- 4. Экранные прыжки после скрытия клавиатуры
- 5. Предотвращает UISearchDisplayController от скрытия UiTable
- 6. Смещение содержимого содержимого UIScrollView
- 7. iPhone вид не переиздается после скрытия клавиатуры
- 8. Метод вызова после скрытия клавиатуры iOS
- 9. EditText Multiline - После скрытия клавиатуры его Singleline
- 10. OnKeyListener перестает работать после скрытия скрытой клавиатуры
- 11. Недопустимое смещение после сброса ключа в массиве?
- 12. Данные внутри табличного представления смешаны после прокрутки
- 13. Обновление табличного представления после добавления объекта
- 14. Быстрая высота содержимого табличного вида
- 15. Wordpress Недопустимое смещение строки
- 16. Недопустимое смещение строки 'размеры'
- 17. Недопустимое смещение строки 'date'
- 18. Недопустимое смещение строки?
- 19. Недопустимое смещение строки codeigniter
- 20. Недопустимое смещение строки php
- 21. php Недопустимое смещение строки
- 22. Недопустимое смещение строки sqlite
- 23. Перезагрузка UITableView за UISearchDisplayController
- 24. Ограничения табличного представления MySQL
- 25. Постоянное заполнение табличного представления
- 26. Добавление другого табличного представления
- 27. Обнаружение скрытия клавиатуры iPad против внешней клавиатуры?
- 28. Недопустимое смещение строки Неопределенное смещение: 2
- 29. приложение для сбоя при удалении табличного представления
- 30. scrollView не возвращается в правильное положение после скрытия клавиатуры
Этот [ответ] (http://stackoverflow.com/a/19162257/467588) похож, но немного короче;) – Hlung