клавиатуры скрывают ввод текста - PullRequest
0 голосов
/ 28 февраля 2012

Я работаю над QuickDialog на здесь

Однако мое представление не может прокручиваться, и клавиатура скрывает вводимый текст.У меня пока что есть - (void) loadView {

self.navigationController.navigationBarHidden       =   NO;
self.navigationController.navigationBar.tintColor   =   [UIColor blackColor];
self.navigationItem.hidesBackButton                 =   NO;
NSLog(@"LOAD VIEW");

self.root                       =   [[QRootElement alloc] init] ;
self.root.controllerName        =   @"CreateAccountViewController";
self.root.grouped               =   YES;
self.root.title                 =   @"Registration";
[super loadView];

QSection    *section1               =   [[QSection alloc] init];

// Create title cell 
QEntryElement *cell1            =   [[QEntryElement alloc] init];
cell1.title                     =   @"Title: ";
cell1.key                       =   @"title";
cell1.placeholder               =   @"Mr/Mrs/Miss";
cell1.hiddenToolbar             =   YES;
cell1.autocapitalizationType    =   UITextAutocapitalizationTypeNone;
cell1.autocorrectionType        =   UITextAutocorrectionTypeNo;

// Create firstName cell 
QEntryElement *cell2            =   [[QEntryElement alloc] init];
cell2.title                     =   @"FirstName: ";
cell2.key                       =   @"firstName";
cell2.placeholder               =   @"Enter your first name";
cell2.hiddenToolbar             =   YES;
cell2.autocapitalizationType    =   UITextAutocapitalizationTypeNone;
cell2.autocorrectionType        =   UITextAutocorrectionTypeNo;


// Create lastName cell 
QEntryElement *cell3            =   [[QEntryElement alloc] init];
cell3.title                     =   @"LastName: ";
cell3.key                       =   @"lastName";
cell3.placeholder               =   @"Enter your last name";
cell3.hiddenToolbar             =   YES;
cell3.autocapitalizationType    =   UITextAutocapitalizationTypeNone;
cell3.autocorrectionType        =   UITextAutocorrectionTypeNo;

// Create phone number cell 
QEntryElement *cell4          =   [[QEntryElement alloc] init];
cell4.title                   =   @"Phone: ";
cell4.key                     =   @"phoneNumber";
cell4.placeholder             =   @"Enter your phone number";
cell4.hiddenToolbar           =   YES;
cell4.autocapitalizationType  =   UITextAutocapitalizationTypeNone;
cell4.autocorrectionType      =   UITextAutocorrectionTypeNo;
.............................
.............................

[main addElement:cell1];
[main addElement:cell2];
[main addElement:cell3];
[main addElement:cell4];
[main addElement:cell5];
[main addElement:cell6];
[main addElement:cell7];

[self.root addSection:section];

После запуска я понял, что клавиатура скрывает контекст, потому что у меня длинный список ввода.Кроме того, представление вообще не прокручивается. Прикрепленное изображение на здесь , которое вы можете увидеть мою проблему ...! [Введите описание изображения здесь] [3]

Я прошел черезПример кода и представление можно прокручивать, чтобы клавиатура вообще не скрывала текст.Есть ли у кого-нибудь идеи по этому вопросу, пожалуйста, помогите.Все комментарии приветствуются здесь

Ответы [ 4 ]

1 голос
/ 04 апреля 2012

Только для этой записи, так как этот вопрос был задан, он был реализован в QuickDialog, так что вам больше не нужно об этом беспокоиться.

1 голос
/ 28 февраля 2012

Одним из способов решения этой проблемы является изменение размера представления прокрутки до [высота экрана] - [высота клавиатуры] (это происходит из аналогичного поста, который я где-то видел).

Возможно, вы захотитепопробуй это.

0 голосов
/ 28 февраля 2012

Реализация этого кода в двух методах делегата вашего textField сделает то, что вы хотите. Вот текст textFieldDidBeginEditing:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
CGRect textFieldRect =
[self.view.window convertRect:textField.bounds fromView:textField];
CGRect viewRect =
[self.view.window convertRect:self.view.bounds fromView:self.view];

CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height;
CGFloat numerator =
midline - viewRect.origin.y
- MINIMUM_SCROLL_FRACTION * viewRect.size.height;
CGFloat denominator =
(MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION)
* viewRect.size.height;
CGFloat heightFraction = numerator / denominator;

if (heightFraction < 0.0)
{
    heightFraction = 0.0;
}
else if (heightFraction > 1.0)
{
    heightFraction = 1.0;
}

UIInterfaceOrientation orientation =
[[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait ||
    orientation == UIInterfaceOrientationPortraitUpsideDown)
{
    animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
}
else
{
    animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
}

CGRect viewFrame = self.view.frame;
viewFrame.origin.y -= animatedDistance;

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];

[self.view setFrame:viewFrame];

[UIView commitAnimations];
}

А вот текст textFieldDidEndEditing:

- (void)textFieldDidEndEditing:(UITextField *)textField
{
CGRect viewFrame = self.view.frame;
viewFrame.origin.y += animatedDistance;

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];

[self.view setFrame:viewFrame];
[self textFieldShouldReturn:textField];

[UIView commitAnimations];
}

Если вы хотите это для кнопок, вы можете просто настроить IBAction с указанным выше кодом.

0 голосов
/ 28 февраля 2012

Есть 2 возможных способа.

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