2013-04-11 4 views
0

Я делаю приложение с несколькими UITextField и UITextView The UITextView находится в нижней части экрана, и всякий раз, когда печатая старты, блоки клавиатуры UITextViewклавиатуры Блоки экрана при вводе текста

Как я в состоянии двигаться вверх вид формы, когда клавиатура появляется на экране? затем переместите его снова, когда клавиатура исчезнет?

+0

Да, вы должны прокручивать экран вверх, пока отображается клавиатура. –

+3

И вы действительно не могли найти * никаких * ответов на это * в любом месте * на переполнение стека или * в любом месте *? – matt

+0

http://stackoverflow.com/questions/1126726/how-to-make-a-uitextfield-move-up-when-keyboard-is-present?rq=1 – matt

ответ

1

Лучший ответ - попытаться избежать этого.

Однако, если вы поместите свои вещи в UIScrollView или UITableView, вы можете прокручиваться до ввода, когда он становится первым ответчиком.

0

Убедитесь, что вы используете UITextFieldDelegate в своем классе. Эти методы делегатов должны сделать трюк для текстового поля с именем activeField:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [activeField setDelegate:self];  
    [self configureView]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return TRUE; 
} 

// Called when the UIKeyboardDidShowNotification is sent. 
- (void)keyboardWasShown:(NSNotification*)aNotification 
{ 
    NSDictionary* info = [aNotification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 

    // If active text field is hidden by keyboard, scroll it so it's visible 
    // Your application might not need or want this behavior. 
    CGRect aRect = self.view.frame; 
    aRect.size.height -= kbSize.height; 
    if (!CGRectContainsPoint(aRect, activeField.frame.origin)) { 
     CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height); 
     [scrollView setContentOffset:scrollPoint animated:YES]; 
    } 
} 

// Called when the UIKeyboardWillHideNotification is sent 
- (void)keyboardWillBeHidden:(NSNotification*)aNotification 
{ 
    UIEdgeInsets contentInsets = UIEdgeInsetsZero; 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 
} 

- (void)registerForKeyboardNotifications 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWasShown:) 
               name:UIKeyboardDidShowNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWillBeHidden:) 
               name:UIKeyboardWillHideNotification object:nil]; 
} 
Смежные вопросы