Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
freeax
2 / 2 / 1
Регистрация: 19.09.2012
Сообщений: 136
#1

При показе клавиатуры часть таблицы остается под ней - Программирование iOS

04.02.2013, 08:38. Просмотров 1900. Ответов 13
Метки нет (Все метки)

Уважаемые гуру!

Пишу приложение для IPhone на Objective-C в xcode. Собственно, при показе клавиатуры часть таблицы остается под ней. Подскажите как решить проблему, плиз!

код прилагается
task1.zip

таблица UITableView, интерфейс UIViewController
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 08:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При показе клавиатуры часть таблицы остается под ней (Программирование iOS):

LinearLayout при вызове клавиатуры остается на месте - Программирование Android
Есть приложение, где LinearLayout в роли нижнего бара, где находятся кнопки. При вызове клавиатуры нужно, что бы он оставался на своей...

Создание таблицы, где часть полей берётся из другой таблицы, а часть создаётся заново - MySQL
Здравствйте,как создать таблицу где часть полей берётся из другой ,а часть создаётся новые?Типа: Добавлено через 27 минут Как то...

При вводе цифр не видна часть клавиатуры - Программирование Android
День добрый. Обратился ко мне человек с проблемой на устройстве samsung galaxy A3 (андроид 6.0.1). У него при вводе цифр, не видно...

Моргание при показе формы - C++ Qt
Есть QMainForm, на нем постоянно в графическом представлении рисуются графические объекты. И вот я создаю форму (из дизайнера) и показываю...

Поменять ZOrder форм при их показе - Lazarus
Спасибо! procedure TForm1.FormShow(Sender: TObject); begin Form2.Show; end; Я сделал 2 форму и при октрытии 1 формы,...

Перенос строки при показе из базы - PHP
Здравствуйте, подскажите мне как сделать, вобщем когда я добавляю в бд текст с переносами строки, он в phpmyadmin нормально отображается,...

13
Монфрид
1199 / 1009 / 154
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
04.02.2013, 11:06 #2
э, а что вы собственно хотите? клавиатура появляется, значит закроет часть представления
0
freeax
2 / 2 / 1
Регистрация: 19.09.2012
Сообщений: 136
04.02.2013, 11:50  [ТС] #3
Цитата Сообщение от Монфрид Посмотреть сообщение
э, а что вы собственно хотите? клавиатура появляется, значит закроет часть представления
нужно чтобы этого не происходило. Например, подтягивать таблицу как-нибудь.... и уменьшить клаву...
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
04.02.2013, 12:47 #4
Не надо клаву меньшить. Надо таблицу сдвинуть. Читайте про UIKeyboardWillShowNotification и UIKeyboardWillHideNotification.
1
Vorona
Peace 2 all shining faces
670 / 532 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
04.02.2013, 22:59 #5
ага, на вышеупомянутых нотификациях:
как вариант - положить таблицу на скроллвью и подтянуть на нужный оффсет когда клавиатура появится
еще как вариант - изменить frame вьюхи или таблицы, - чего угодно
Objective-C
1
2
3
CGRect frame = self.view.frame; 
frame.origin.y = -100; 
[self.view setFrame:frame];
ну и т.д., можно прогуглить кучу способов
1
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
05.02.2013, 07:29 #6
И изменять нужно анимированно. Время анимации - 0.25.
1
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
05.02.2013, 11:50 #7
Если верит моим экспериментам, 0.275 . Но, думаю, где-то должна быть константа на этот счет.
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
05.02.2013, 13:25 #8
Цитата Сообщение от mobidevelop Посмотреть сообщение
Если верит моим экспериментам, 0.275 . Но, думаю, где-то должна быть константа на этот счет.
Вполне реально, но учитывая частоту обновления экрана - разницу не сильно будет заметно
0
freeax
2 / 2 / 1
Регистрация: 19.09.2012
Сообщений: 136
07.02.2013, 09:42  [ТС] #9
Цитата Сообщение от Vorona Посмотреть сообщение
ага, на вышеупомянутых нотификациях:
как вариант - положить таблицу на скроллвью и подтянуть на нужный оффсет когда клавиатура появится
еще как вариант - изменить frame вьюхи или таблицы, - чего угодно

Кликните здесь для просмотра всего текста

Objective-C
1
2
3
CGRect frame = self.view.frame; 
frame.origin.y = -100; 
[self.view setFrame:frame];
ну и т.д., можно прогуглить кучу способов

Вот, что вышло

Кликните здесь для просмотра всего текста

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
- (void)keyboardWillShow:(NSNotification *)notification {
    NSDictionary *userInfo = [notification userInfo];
    NSValue *keyboardBoundsValue = [userInfo objectForKey:UIKeyboardBoundsUserInfoKey];
    [keyboardBoundsValue getValue:&keyboardBounds];
    keyboardIsShowing = YES;
    [self resizeViewControllerToFitScreen];
}
 
- (void)keyboardWillHide:(NSNotification *)notification {
    keyboardIsShowing = NO;
    keyboardBounds = CGRectMake(0, 0, 0, 0);
    [self resizeViewControllerToFitScreen];
    
}
 
- (void)resizeViewControllerToFitScreen {
 
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
    CGRect frame = self.view.frame;
    frame.size.height = applicationFrame.size.height;
    
    if (keyboardIsShowing) {
        frame.size.height -= keyboardBounds.size.height;
        [self.view setFrame:frame];
    }
    
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.3f];
    self.view.frame = frame;
    [UIView commitAnimations];
}


Положил UITableView на UIScrollView, но когда изменяю размер мэинфрейма, результат мягко говоря не радует: маинфрейм поднимается вверх и не видно поле ввода UITextField, подскажите как поправить... нужно чтобы сжался только UIScrollView, а UITextField остался на прежнем месте

Добавлено через 2 часа 44 минуты
переделал, работает

Кликните здесь для просмотра всего текста

Objective-C
1
2
3
4
5
6
if (keyboardIsShowing) {
        tableFrameSave = self.myTable.frame;
        self.myTable.frame = CGRectMake(0, keyboardBounds.origin.y, applicationFrame.size.width, tableFrameSave.size.height - keyboardBounds.size.height);
    } else {
        self.myTable.frame = tableFrameSave;
    }


Добавлено через 47 секунд
Цитата Сообщение от Vorona Посмотреть сообщение
ага, на вышеупомянутых нотификациях:
Еще такая проблема, у меня UITableView внутри UIScrollView
Нужно выполнить код при прокрутке. Подскажите, в сторону каких методов копать?
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
07.02.2013, 12:43 #10
Цитата Сообщение от freeax Посмотреть сообщение
Еще такая проблема, у меня UITableView внутри UIScrollView
Нужно выполнить код при прокрутке. Подскажите, в сторону каких методов копать?
TableView (который тоже UIScrollView) на scrollView это уже плохо. Это точно обязательно? Есть случаи, когда не тот скролл скроллиться начинает.

А по теме, либо UIScrollViewDelegate, либо делайте наследник UIScrollView и перегружайте layoutSubviews. Смотря что за код. Тут недавно такая тема была.
0
freeax
2 / 2 / 1
Регистрация: 19.09.2012
Сообщений: 136
07.02.2013, 13:02  [ТС] #11
Цитата Сообщение от mobidevelop Посмотреть сообщение
TableView (который тоже UIScrollView) на scrollView это уже плохо. Это точно обязательно? Есть случаи, когда не тот скролл скроллиться начинает.

А по теме, либо UIScrollViewDelegate, либо делайте наследник UIScrollView и перегружайте layoutSubviews. Смотря что за код. Тут недавно такая тема была.
то есть TableView уже включает в себя UIScrollView?
Если так, то я могу вполне убрать UIScrollView под таблицей

мой код
task1v2.zip
может поможете? буду очень блогадарен!

я просто только начинаю вникать в разработку под iphone и objectiv-c изучаю меньше недели. Как говорится галопом по европам((((
0
freeax
2 / 2 / 1
Регистрация: 19.09.2012
Сообщений: 136
07.02.2013, 13:10  [ТС] #12
только вот проблема, когда я убрал сколвью под тейблой, почему-то при подтягивании таблицы, в момент когда клавиатура поднимается, сдвигается textField(( и это очень плохо
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
07.02.2013, 13:14 #13
Не включает. Наследует. ScrollView можно смело выкидывать.
А в целом нормально для первой недели
Замечаний 2: датасорс для таблицы лучше задать в ксибке и обращайте внимание на ворнинги. UIKeyboardBoundsUserInfoKey устарел еще в 3.2.

А чтобы textField не поднимался, его просто поднимать не надо height у таблицы поменяйте и больше ничего.
1
dollar8
13 / 13 / 3
Регистрация: 25.09.2011
Сообщений: 84
12.02.2013, 00:58 #14
ТейблВью наследуется от КсролВью (это так между прочим)
ПОэтому когда клава показывается, двигай фрейм У ТейблВью или скроль вверх сколько тебе надо.
0
12.02.2013, 00:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 00:58
Привет! Вот еще темы с ответами:

Как делаются сайты, у которых часть всегда остается загруженной на экране? - PHP
Привет Всем, Когда я лазел в инете по разным сайтам, я натылкилвался на такие странные сайты. Странность этих сайтов вот в чем, у них...

При наложении на картинку анимации, двигается и текст под ней - HTML, CSS
Приветствую, возник такой вопрос. Используя анимацию на картинку. Под ней двигается так же и текст, а как зафиксировать текст? <section...

Определить максимальное из значений суммы элементов над главной диагональю, на ней и под ней - Pascal ABC
если можно с коментариями определить максимальное из значений сумы елементов,над главной диагональю,на ней и под ней

Сделать, чтобы при нажатии кнопки под ней появлялось PopupMenu - Delphi
народ как сделать штоб при нажатии кнопки под ней появлялось PopupMenu1


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.