我正在开发一款iPhone应用程序。我的UITableView
上有一个简单的ViewController
。在UITableView
中,我在单元格中添加UITextField
。我的问题是,当我点击特定单元格中的UITextField
时,键盘会隐藏整个UITableView
。我搜索过它,但无法成功找到解决方案。我正在添加UITextField
,如下所示:
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
。为此,您可以更改UITextFieldBeginEditing
方法中的y位置,也可以使用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);
}];
}
答案 1 :(得分:1)
尝试在textFieldDidBeginEditing方法
中将此行添加到您的代码中[self.tableView setContentOffset:CGPointMake(0,textField.center.y-170) animated:YES];
这里170是适合我的价值,你可以试试其他。 希望它可能有所帮助。
答案 2 :(得分:0)
您可以使用UITableViewController
课程而不是UIViewController
来解决您的问题。
答案 3 :(得分:0)
TextBeginEditing中的一行代码
[self.tableView scrollToRowAtIndexPath:indexpath atScrollPosition:UITableViewScrollPositionTop animated:YES];
它会使你的那一行在那里有很多位置,你可以相应地改变。