我有一个项目,我正在这个时间工作,我想调整键盘上方的UITextView
和UITextField
,因为当键盘出现TextView和TextField并隐藏在后面它
这是我的屏幕截图, 没有键盘:
使用键盘,
答案 0 :(得分:1)
这是一个相当普遍的问题,有各种各样的解决方案。我把它放在一起,使它成为我的EnkiUtils软件包的一部分,你可以从https://github.com/pcezanne/EnkiUtils下载
简短版本:您想要查看键盘事件并调用Enki keyboardWasShown方法,将其传递给当前视图(如果您在表格中,则传递给单元格)。
长版本:以下是我博客中的文字(http://www.notthepainter.com/expose-the-uitextfield-when-keyboard-is-shown/)
请注意,它是一个类方法,而不是实例方法。我保留了一个名为EnkiUtilities的课程来保存有用的东西。要调用它,我们首先设置我们的观察者:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
在keyboardWasShown方法中,我们调用了实用程序方法:
- (void)keyboardWasShown:(NSNotification*)aNotification
{
[EnkiUtilities keyboardWasShown:aNotification view:self scrollView:myTableView activeField:activeField activeCell:activeCell];
}
那么什么是activeField和activeCell?让我们看看我们的textViewDidBeginEditing方法,看看它们是如何设置的
-(void)textViewDidBeginEditing:(UITextView *)sender
{
activeField = sender;
if ([sender isEqual:descriptionTextView]) {
activeCell = descriptionCell;
if (shouldClearDescription) {
[descriptionTextView initWithLPLStyle:@""];
shouldClearDescription = false;
}
}else if ([sender isEqual:hintTextView]) {
activeCell = hintCell;
if (shouldClearHint) {
[hintTextView initWithLPLStyle:@""];
shouldClearHint = false;
}
} else {
activeCell = nil;
}
}
当UITextField开始编辑时调用此方法。我将activeField设置为sender,然后将activeCell设置为与该字段对应的单元格。
唯一剩下的就是在键盘消失时恢复视图。
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
myTableView.contentInset = contentInsets;
myTableView.scrollIndicatorInsets = contentInsets;
}
当你在没有UITableView的情况下工作时,只需将文本字段放入UIScrollView并将其传递给keyboardWasShown,而不是UITableView。