滚动 UIScrollView 以适应 iOS 中的键盘
Posted
技术标签:
【中文标题】滚动 UIScrollView 以适应 iOS 中的键盘【英文标题】:Scrolling a UIScrollView to accommodate the keyboard in iOS 【发布时间】:2014-02-19 05:43:46 【问题描述】:我有一个滚动视图,其中包含 1500 pt 高的内容视图。它滚动的屏幕是标准 iPad 纵向屏幕 (1024)。
我有一些分散在滚动视图的内容视图中的文本字段。当我打开键盘(通过点击文本字段)时,我已经将滚动视图的底部约束提高了 216 个点,以便为键盘腾出空间。但是,如果我的文本视图位于屏幕底部,它仍然会被键盘隐藏。
我想以编程方式滚动滚动视图(我知道如何使用[self.scrollview setContentOffset:CGMake...
),但我不知道滚动它的距离。我尝试使用 textField 框架的 y 坐标来计算它,但我认为我只能检索相对于内容视图高度的值……而不是它在屏幕上的实际位置(就好像我在 iPad 外部测量它一样使用以点为单位的卷尺)。
为了计算视图滚动的距离,我现在需要知道文本框在屏幕上的位置——这样我就可以确定它是否会被键盘覆盖并移动滚动足以看到它。
有什么方法可以找出文本字段在屏幕上的位置吗?
谢谢!
【问题讨论】:
请在您的问题中添加屏幕截图以更清晰 apeth.com/iosBook/ch23.html#_keyboard_covers_text_field 使用convertRect:fromView
、convertRect:ToView
、convertPoint:ToView
或convertPoint:fromView
转换坐标。
【参考方案1】:
我使用此代码 sn-p 在我的 iPhone 应用程序中获得相同的结果。为 heightDiff
找到合适的值float heightDiff = 150;
CGPoint yScrollPoint = [self.scrollView convertPoint:CGPointZero fromView:self.textfield];
CGPoint scrollPoint = CGPointMake(0.0, yScrollPoint.y - heightDiff);
[self.scrollView setContentOffset:scrollPoint animated:YES];
将此添加到您的 textFieldDidBeginEditing:textField
希望这会有所帮助。
【讨论】:
【参考方案2】:Matt 在上面的评论中发布了一个链接,其中详细说明了如何执行此操作以及更多内容:http://www.apeth.com/iOSBook/ch23.html#_keyboard_covers_text_field
【讨论】:
以上是关于滚动 UIScrollView 以适应 iOS 中的键盘的主要内容,如果未能解决你的问题,请参考以下文章
在 xib 文件视图之外设置视图以适应滚动视图 + 不同的 xib 用于方向 - iOs
UIScrollView 内的 UIWebView 框架不会拉伸大小以适应所有内容