2014-02-05 1 views
0

Я имею текстовое поле, которое оказывает иерархию какПоложение UITextField со ссылкой на его 7 надтаблицы

self.view-> Tableview-> contentview-> anotherview-> MyTextField.

Я хочу получить y позицию MyTextField со ссылкой на self.view.

Мое требование:

Всякий раз, когда я нажимаю на текстовом поле, я открываю свою клавиатуру, если текстовое поле находится под моей клавиатурой (который я буду проверять, сравнивая кадр MyTextField со ссылкой на self.view), то я буду (если MyTextField не находится под моей клавиатурой), тогда мне не нужно менять рамку.

Я пытаюсь использовать следующий метод, но не знаю, как точно реализовать это.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 

    UIView *aView = textField.superview.superview.superview.superview.superview.superview.superview; 
    NSLog(@"%@",[aView class]); 
    CGRect textFieldRect = [textField convertRect:textField.frame fromView:aView]; 
    NSLog(@"View: %@",NSStringFromCGRect(textFieldRect)); 
    return YES; 
} 
+0

Проверьте это [ссылка] [1] для решения вашей проблемы [1]: http://stackoverflow.com/questions/11696508/how-to-convert-subviews-frame-coordinate-system -to-self-views-coord-syste – nik

+0

И еще один полезный ответ http://stackoverflow.com/questions/5407416/iphone-set-subviews-frame-outside-of-superviews-bound – nik

+0

@nik Вы можете щелкнуть _help_ рядом с кнопкой _Add Comment_, чтобы увидеть форматирование комментария. – Desdenova

ответ

0
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    CGPoint pt; 
    CGRect rc = [textField bounds]; 
    rc = [textField convertRect:rc toView:tableView]; 
    pt = rc.origin; 
    pt.x = 0; 
    pt.y -= (165 + ([UI isIPhone5] ? 80 : 0)); 
    [tableView setContentOffset:pt animated:YES]; 

    return YES; 
} 

просто сделать, как это .... Потому табличном также Scrollview. Тогда я узнаю это из стека через поток только, но теперь я не знаю ссылку

0

Просто установить Tableview рамку выше KeyBoard, вы можете легко найти текущей TextField ячейки в таблице вид, вид изменения таблицы contentoffset для выбранной ячейки в textFieldShouldBeginEditing

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    // set table view frame 
    UITableViewCell *cell = (UITableViewCell *)textField.superview.superview.superview; 
    NSIndexPath *indexPath = [self.filterTableView indexPathForCell:cell]; 
    [tableView scrollToRowAtIndexPath:selectedIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
return YES; 

} 

Примечание: Сброс высоты просмотра таблицы в textFieldShouldEndEditing

+0

не будет работать в ios6 – Rajneesh071

+0

@ Rajneesh071 элемент таблицы таблицы обновлен в ios7, попробуйте этот UITableViewCell * cell = (UITableViewCell *) textField.superview; – NANNAV

+0

Да, я знаю это ... но вы должны упомянуть об этом в своем ответе ... – Rajneesh071

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