2014-02-20 3 views
1

Я разрабатываю приложение для iPhone. У меня есть простой UITableView на моем ViewController. В UITableView я добавляю UITextField в ячейку. Моя проблема - когда я нажимаю на UITextField в конкретной ячейке, клавиатура скрывает все UITableView. Я искал об этом, но не смог найти решение. Я добавляю UITextField так:Клавиатура скрывает UITableView в StoryBoard

UITextField* textField = [[UITextField alloc]initWithFrame:CGRectMake(250, 15, 60, 30)]; 
textField.delegate = self; 
textField.borderStyle = UITextBorderStyleRoundedRect; 
textField.autocorrectionType = UITextAutocorrectionTypeNo; 
textField.backgroundColor = [UIColor clearColor]; 
textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
textField.tag =TEXT_VIEW_TAG; 
[cell.contentView addSubview:textField]; 

Если кто-нибудь знает свое решение, то пожалуйста, дайте мне знать.

+0

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

ответ

2

Добавление UITableViewController может фактически справиться с этим самостоятельно. Однако, если вам действительно нужно использовать UITableView, но все же хотите, чтобы клавиатура не скрывала ваш UITableView, вам нужно будет переместить UITableView вверх, когда клавиатура включена. Для этого вы можете либо изменить позицию y в методе UITextFieldBeginEditing, либо использовать уведомления UIKeyboard. Вам нужно будет добавить следующие строки кода в viewDidLoad метода:

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

И потом, вы можете добавить эти методы, как:

- (void) myKeyboardWillHideHandler:(NSNotification *)notification { 

      [UIView animateWithDuration:0.2 animations:^{ 
       YOUR_TBL_VIEW.frame = CGRectMake(YOUR_TBL_VIEW.frame.origin.x, YOUR_TBL_VIEW.frame.origin.y + 80, YOUR_TBL_VIEW.frame.size.width, YOUR_TBL_VIEW.frame.size.height); 
      }]; 
     } 

    - (void) myKeyboardWillShowHandler:(NSNotification *)notification { 
      [UIView animateWithDuration:0.2 animations:^{ 
       YOUR_TBL_VIEW.frame = CGRectMake(YOUR_TBL_VIEW.frame.origin.x, YOUR_TBL_VIEW.frame.origin.y - 80, YOUR_TBL_VIEW.frame.size.width, YOUR_TBL_VIEW.frame.size.height); 
      }]; 


} 
+0

спасибо много лет ... большое спасибо. Наконец, он решил мою проблему :) –

0

Вы можете взять класс UITableViewController вместо UIViewController, который решит вашу проблему самостоятельно.

+0

спасибо за ответ ур. Дай мне попробовать. –

1

Попробуйте добавить эту строку кода в методе textFieldDidBeginEditing

[self.tableView setContentOffset:CGPointMake(0,textField.center.y-170) animated:YES]; 

Здесь 170 это значение подходит для меня, и можете попробовать другие. Надеясь, что это может помочь.

0

одной строки кода в TextBeginEditing

[self.tableView scrollToRowAtIndexPath:indexpath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

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

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