Клавиатура блокирует мой взгляд - PullRequest
0 голосов
/ 22 апреля 2010

У меня есть UIView с другим UIView внутри него. На внутренней стороне UIView есть текстовое поле, которое я хочу заполнить. Когда я пытаюсь заполнить его в клавиатуре, блокирует мой вид:

UIViewController имеет следующее

containerView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.view=containerView;
//The apropriate releases etc are further on...

Когда я прикасаюсь к ней, клавиатура появляется, как и ожидалось, но блокирует текстовое поле, которое я пытаюсь заполнить. Как заставить вид скользить вверх?

Вид спереди

OptionsFront * fv = [[OptionsFront alloc] initWithFrame:[UIScreen mainScreen].bounds];
[containerView addSubview:frontView];

На виде спереди есть подпредставление

CGRect bounds = CGRectMake(0.0f, 210.0f, 280.0f, 130.0f);
sv = [[UIView alloc] initWithFrame:bounds];
[self addSubview:sv]; //added to frontView

В sv есть текстовое поле рядом с кнопкой:

rect = CGRectMake(70.0f, 20.0f, 100.0f, 27.0f);
cf = [self createTextField_Rounded:rect holder:@"+ve"];
[sv addSubview:cf];

Так что cf оказался в нижней части страницы. Я ожидал, что когда я выберу его, весь экран будет двигаться вверх, но клавиатура просто поднимается и блокирует его.

Что я могу сделать?

Приложение:

- (UITextField *)createTextField_Rounded:(CGRect) frame holder:(NSString *) ph
{
UITextField *returnTextField = [[UITextField alloc] initWithFrame:frame];
returnTextField.borderStyle = UITextBorderStyleRoundedRect;
    returnTextField.textColor = [UIColor blackColor];
returnTextField.font = [UIFont systemFontOfSize:17.0];
returnTextField.delegate = self;
returnTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
returnTextField.returnKeyType = UIReturnKeyDone;

returnTextField.clearButtonMode = UITextFieldViewModeWhileEditing;

return returnTextField;
}

1 Ответ

3 голосов
/ 22 апреля 2010

вам нужно переместить текстовое поле вверх. в вашем UITextField делегате реализовать что-то вроде (из памяти):

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    textField.superview.frame = CGRectMake(0.0f, 100.0f, 280.0f, 130.0f); // experiment with frame size
    [UIView commitAnimations];
}

и вы захотите переместить его обратно в textFieldDidEndEditing:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...