2012-02-28 2 views
0

Я работаю над QuickDialog в hereклавиатуры скрыть ввода текста

Однако, на мой взгляд, не может прокручивать и клавиатура скрывается ввод текста. То, что я имею до сих пор - (Недействительными) 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]; 

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

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

ответ

1

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

1

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

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

+1

Чувак ... Никогда не пишите. Ты должен сохранить эту репутацию! – wizH

+0

Ха-ха-ха, да. Скриншот черта из него =)) – ExtremeCoder

+0

Lol. Я тоже так сделал (: – wizH

0

Существует 2 возможных способа.

  1. Чтобы изменить высоту обзора, когда клавиатура открывается или закрывается.
  2. Чтобы изменить вид начала, когда клавиатура открывается или закрывается.
0

Реализация этого кода в двух методах делегата вашего текстового поля будет делать то, что вы хотите. Вот 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

благодарит за всех комментариев .. – tranvutuan

+0

Я думаю, что сам код довольно понятен. Просто скажите мне, что вы не понимаете, и я вам скажу! :) – wizH

Смежные вопросы