2015-02-25 2 views
0

Привет У меня есть UItextField внутри ячейки, и он закрывается виртуальной клавиатурой, когда он начинает редактирование. Это представление JSON я сделал, чтобы показать компоненты в моем ViewControllerTextField покрыт виртуальной клавиатурой iOS

MyViewController : {  
    UIView : { 
      UIView : { 
       height : 100 
      }, 
      UITableView : { 
       cell1 : myCell, 
       cell2 : myCell, 
       cell3 : myCell, 
       cell4 : { 
          UITextField 
         } 
      } 
    } 
} 

Что я должен сделать так, чтобы просмотреть прокрутке, когда я начала редактирования TextField?

ответ

0

Стандартная практика заключается в использовании прокрутки для прокрутки содержимого вашего вида, когда клавиатура видна. Apple, обеспечивает коды образца в своем документе Managing the Keyboard:

листинге 5-3 Регулировка кадра представления содержимого и прокрутки в поле над клавиатурой

- (void)keyboardWasShown:(NSNotification*)aNotification { 

    NSDictionary* info = [aNotification userInfo]; 

    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    CGRect bkgndRect = activeField.superview.frame; 

    bkgndRect.size.height += kbSize.height; 

    [activeField.superview setFrame:bkgndRect]; 

    [scrollView setContentOffset:CGPointMake(0.0, activeField.frame.origin.y-kbSize.height) animated:YES]; 

}

Есть дополнительные шаги, необходимые для регистрации уведомлений о клавиатуре, все они включены в упомянутый документ.

Есть другие способы, упомянутые в документе, ни один из которых не является автоматическим. Иногда, когда такая базовая функциональность требует дополнительного кода, например, нам напоминают, что есть возможности для улучшения с помощью инструментов разработки Apple.

0

Вы хотите отрегулировать вставки содержимого вашего воздействия, когда клавиатура собирается отображать. Затем сбросьте его до 0, как только клавиатура будет уволена.

+0

Разве это не нуждается в моем вмешательстве? – Cherif

+1

Это должно быть абсолютно необходимо для вашего вмешательства. Поскольку клавиатура - это окно, отображаемое * над * вашими представлениями и не связанное с вашим приложением, это зависит от вашего приложения, чтобы переместить представления соответственно. –

0

Сначала вам нужно получить уведомление от iOS, когда клавиатура появилась.

В viewDidLoad вы можете зарегистрировать свой VC в Observ:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardWillShown:) 
              name:UIKeyboardWillShowNotification object:nil]; 

Теперь ваш keyboardWillShown: методы будут вызываться, когда появится клавиатура. В клавиатуреWillShown: метод, который вы хотите изменить в tableViews contentInset. Это, как вы делаете:

- (void)keyboardWillShown:(NSNotification*)aNotification { 
    NSDictionary* info = [aNotification userInfo]; 
    self.keyboardSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey]CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0,self.keyboardSize.height, 0.0); 
    self.tableView.contentInset = contentInsets; 
    self.tableView.scrollIndicatorInsets = contentInsets; 
    [self scrollToContent]; 
} 

Теперь вы изменили tableViews contentInset и вы сохранили клавишный размер к свойству (keyboardSize), но это не проверяются, что содержание видно. В последней строке я назвал метод scrollToContent который прокручивать Tableview в требуемое положение:

-(void)scrollToShowActiveField { 
    //your views size 
    CGRect myViewRect = self.view.frame; 
    //substract the keyboards size 
    myViewRect.size.height -= self.kbSize.height; 

    //offsettedFrame is your UITextView 
    CGRect offsettedFrame = self.activeField.frame; 

    //we want to see some "padding" between the textview and the keyboard so I add some padding 
    offsettedFrame.origin.y += 100; 

    if (!CGRectContainsPoint(myViewRect, offsettedFrame.origin)) { 
     [self.tableView scrollRectToVisible:offsettedFrame animated:YES]; 
    } 
} 

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

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