我有一个应用程序,你有文本字段和一个textview但是当我拿到键盘它隐藏了较低的文本字段。我该怎么做。
我试过了:
的.m:
- (void)textFieldDidBeginEditing:(UITextField *)sender {
CGSize content = _scrollView.contentSize;
_scrollView.contentSize = CGSizeMake(content.width, content.height + 200);
svos = _scrollView.contentOffset;
CGPoint pt;
CGRect rc = [sender bounds];
rc = [sender convertRect:rc toView:_scrollView];
pt = rc.origin;
pt.x = 0;
pt.y -= 200;
[_scrollView setContentOffset:pt animated:YES];
}
- (IBAction)textFieldShouldReturn:(UITextField *)textField {
CGSize content = _scrollView.contentSize;
_scrollView.contentSize = CGSizeMake(content.width, content.height - 200);
[_scrollView setContentOffset:svos animated:YES];
[textField resignFirstResponder];
}
·H:
CGPoint svos;
虽然底部文本字段仍然隐藏,但它会滚动到可见的
答案 0 :(得分:0)
您已获取发件人文本字段的来源但仅向上移动60,因此,键盘覆盖了较低的文本字段。您需要知道键盘的高度并计算向上移动的距离。检查this。它有很多答案,所以我不会再解释了。
要滚动到滚动视图内的底部文本字段,请在textFieldDidBeginEditing中添加以下行:
CGSize content = _scrollview.contentSize;
_scrollview.contentSize = CGSizeMake(content.width, content.height + 200);
这将以编程方式扩展您的contentSize,以便您可以滚动到最后一个文本字段并允许键盘覆盖空白区域。
在textFieldDidEndEditing或textFieldShouldReturn中,在您的情况下,添加以下内容:
CGSize content = _scrollview.contentSize;
_scrollview.contentSize = CGSizeMake(content.width, content.height - 200);
我使用任意200作为例子。你需要弄清楚你想要多少。
答案 1 :(得分:0)
用于在iOS中移动文本字段而不受键盘影响的插入式通用解决方案
https://github.com/michaeltyson/TPKeyboardAvoiding
它对我来说很完美。
您只需要在项目中复制所需的类(TPKeyboardAvoidingScrollView或TPKeyboardAvoidingTableView),并在界面构建器文件中将UIScrollView类更改为TPKeyboardAvoidingScrollView或UITableView更改为TPKeyboardAvoidingTableView,其余的内容将由这些类处理。 / p>
答案 2 :(得分:0)
您是否看过有关管理键盘的文档? (apple documentation)有一个我认为你正在做的事情的例子。希望它有所帮助。