Прокрутите в конкретном текстовом поле в прокрутке Scrollview/Scrollview Spopling, когда клавиатура находится на экране
-
22-09-2019 - |
Вопрос
Я застрял здесь,
У меня есть пользовательский ScrollView в представлении, в котором этот вид прокрутки имеет кнопку «Добавить поле», которая позволяет пользователю добавить новое текстовое поле в ScrollView. Когда появляется пользователь на конкретную клавиатуру Textfield и скрыть текстовое поле, чтобы преодолеть это, я следовал примеру uicatalog, но он перемещает весь Scrollview
Чтобы предотвратить это, я следовал примеру uicatalog и сделал это
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
if (sender.frame.origin.y>109) {
moveScrollViewUpBy=(sender.frame.origin.y-109+10);
[self viewMovedUp:YES];
}
}
-(void)viewMovedUp:(BOOL)movedUp
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = formScrollView.frame;
if (movedUp)
{
if(rect.origin.y == 0.0f){
rect.origin.y -= kOFFSET_FOR_KEYBOARD;
rect.size.height += kOFFSET_FOR_KEYBOARD;
}
}
else
{
if(rect.origin.y != 0.0f){
rect.origin.y += kOFFSET_FOR_KEYBOARD;
rect.size.height -= kOFFSET_FOR_KEYBOARD;
}
}
self.formScrollView = rect;
[UIView commitAnimations];
}
здесь
#define kOFFSET_FOR_KEYBOARD 160.0
Но это меняет просмотр свитка,
Я хочу это, когда я нажимаю на текстовое поле внизу в просмотре прокрутки ... Прокрутите просмотр свитков, и это текстовое поле появляется ....
Можно ли это сделать ... иначе предложите мне другое решение
У меня есть еще один запрос Srollview, просто прекратите прокручивать, пока клавиатура остается на экране. Есть ли способ преодолеть это
Решение
Вы, вероятно, просто хотите установить свойство ContentOffset ScollView, а не настраивать его границы.
Другие советы
Реализуйте UitextViewDelegate и сделайте следующее:
- (void)textViewDidBeginEditing:(UITextView *)textView {
keyboardShowing = YES; //helper ivar
[self sizeToOrientation];
[self.scrollView scrollRectToVisible:textView.frame animated:YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
keyboardShowing = NO;
[self sizeToOrientation];
}
Вспомогательный метод:
//fit to the appropriate view sizes
- (void)sizeToOrientation {
CGSize size;
if( keyboardShowing )
size = CGSizeMake(320, 190); //make room for keyboard
else
size = CGSizeMake(320, 420); //full height with tabbar on bottom
self.scrollView.frame = CGRectMake(0, 0, size.width, size.height);
}
Это хорошо работает для меня.