Я знаю, что вы можете использовать свойство «Вставить» в Interface Builder, чтобы сделать вид прокрутки вставкой из главного окна, чтобы оно не опускалось ниже существующего элементы управления на экране, такие как панель вкладок, но как вы можете сделать это программно, чтобы настроить, когда клавиатура добавляется на экран? В настоящее время в моем представлении прокрутки есть ячейки под клавиатурой, которые не могут быть достигнуты, потому что представление все еще регистрирует нижнюю часть прокрутки в нижней части телефона, а не на верхней части клавиатуры. Любая помощь?Изменение вложений прокрутки UITableView программно, чтобы отразить размер клавиатуры iPhone.
ответ
#pragma mark Keyboard Handling
- (void) viewDidAppear:(BOOL) ani {
onscreen = YES;
NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(keyboardWillAppear:) name:UIKeyboardWillShowNotification object:nil];
[center addObserver:self selector:@selector(keyboardDidAppear:) name:UIKeyboardDidShowNotification object:nil];
[center addObserver:self selector:@selector(keyboardWillDisappear:) name:UIKeyboardWillHideNotification object:nil];
}
- (void) viewDidDisappear:(BOOL) ani {
onscreen = NO;
NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
[center removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[center removeObserver:self name:UIKeyboardDidShowNotification object:nil];
[center removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
- (void) keyboardWillAppear:(NSNotification*) n {
NSLog(@"Keyboard is about to appear");
}
- (void) keyboardDidAppear:(NSNotification*) n {
CGRect bounds = [[[n userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
bounds = [self.view convertRect:bounds fromView:nil];
CGRect tableFrame = searchResultsTable.frame;
tableFrame.size.height -= bounds.size.height; // subtract the keyboard height
if (self.tabBarController != nil) {
tableFrame.size.height += 48; // add the tab bar height
}
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(shrinkDidEnd:finished:contextInfo:)];
searchResultsTable.frame = tableFrame;
[UIView commitAnimations];
//[self hideEditorView:currentEditorView];
//[currentEditorView removeFromSuperview];
}
- (void) shrinkDidEnd:(NSString*) ident finished:(BOOL) finished contextInfo:(void*) nothing {
NSIndexPath* sel = [searchResultsTable indexPathForSelectedRow];
if (![[searchResultsTable indexPathsForVisibleRows] containsObject:sel])
{
[searchResultsTable scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
}
- (void) keyboardWillDisappear:(NSNotification*) n {
CGRect bounds = [[[n userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
bounds = [self.view convertRect:bounds fromView:nil];
CGRect tableFrame = searchResultsTable.frame;
tableFrame.size.height += bounds.size.height; // add the keyboard height
if (self.tabBarController != nil) {
tableFrame.size.height -= 48; // subtract the tab bar height
}
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(shrinkDidEnd:finished:contextInfo:)];
searchResultsTable.frame = tableFrame;
[UIView commitAnimations];
[searchResultsTable scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
Два варианта. (Когда вы говорите прокрутки мнение, я думаю, вы имеете в виду вид таблицы, так как предполагает название так)
Используйте
UITableViewController
, если клавиатура добавляется в табличном я считаю, что это будет делать изменения размера для васв протоколе текстового поля или текстового поля в методе
- (void)textFieldDidBeginEditing:(UITextField *)textField
, изменить размер просмотра кадра таблицы и конец сделал установить его редактирование отделки назад так (это один вы можете сделать, если его вид прокрутки, а не Tableview)(void) textFie ldDidBeginEditing: (UITextField *) textField { CGRect frame = tableView.frame; // или просмотр прокрутки frame.size.height = frame.size.height- keyboardHeight; tableView.frame = кадр }
(пустоты) textFieldDidEndEditing: (UITextField *) TextField { CGRect рамы = tableView.frame; // или просмотр прокрутки frame.size.height = frame.size.height + keyboardHeight; tableView.frame = кадр }
Надеется, что это помогает
Другого простым способу с помощью Interface Builder или код
Установите [Table View Размер Footer Высота] до 200 (поиграйте с этим для своего макета). Это фактически делает таблицу больше, чем ограничивающий фрейм, внутри которого он содержится, позволяя прокручивать таблицу выше, чем обычно.
Отлично подходит для того, чтобы пользователь мог прокручивать стол вверх и вниз по мере необходимости.
Я думаю, что вы должны использовать вставки Content/Scroller для такого рода вещей – kolinko
Я создал небольшой проект, который решает эту проблему с клавиатуры, в моем случае мне нужно только увеличить представление таблицы при появлении клавиатуры.
Надеюсь, это поможет!
- 1. iPhone + изменение размера UITableView
- 2. Изменение размера раскадровки uitableview программно?
- 3. Изменение размера UITableView программно
- 4. Изменение кадра UITableView программно
- 5. Изменение языка ввода клавиатуры Программно
- 6. Остановка iPhone UITableView от прокрутки вверх
- 7. Решение Xamarin для UITableView и прокрутки клавиатуры
- 8. Программно выровнять панель инструментов поверх клавиатуры iPhone
- 9. Запрос, чтобы отразить фактическое существенное изменение данных
- 10. Проблемы с изменением вложений UITableView при отображении его клавиатуры
- 11. Изменение цвета полосы прокрутки программно
- 12. Изменение цвета полосы прокрутки программно
- 13. iphone dev: динамическое изменение размера UITableView
- 14. Программно имитировать события клавиатуры на iPhone
- 15. Cocos2d iPhone. Размер прокрутки. Слои
- 16. Изменение размера UITableview для экрана iphone 5
- 17. Размер вложений в TFS 2010
- 18. Программно перемещать панель инструментов поверх клавиатуры iPhone
- 19. Прокрутка прокрутки iPhone с помощью UITableView
- 20. Трюки для улучшения производительности прокрутки iPhone UITableView?
- 21. Как изменить размер клавиатуры iphone uitextfiled
- 22. Изменение размера клавиатуры UITableView после того, как insertSections не работает
- 23. Изменение позиции UITableViewCell во время прокрутки UITableView
- 24. прокрутки Scrollview в нижней программно - Iphone
- 25. задает размер UIImageView в ячейке UITableView программно - каково происхождение?
- 26. Изменение размера UIPopover и его UITableView программно
- 27. UITableView размер для IPad/iPhone 5,6,6+
- 28. Изменить размер UITableView на iPhone 5/5s
- 29. Изменение размера клавиатуры по умолчанию в Android Программно
- 30. JavaFX 2.1 Изменение Scrollbar Размер полосы прокрутки
это альтернатива, и мне это нравится, потому что таким образом представление таблицы не обязательно должно быть делегатом текстовые поля ...+1 – Daniel
Вы не должны использовать подчеркивание в качестве префикса для своих методов, потому что они могут столкнуться с собственными методами Apple. Вместо этого вы должны использовать что-то вроде _slf. –
@Rafael вот и вы, удалили подчеркивания :) – slf