测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可 | 自定义 |
发布最后发布 | 2014年12月 |
由Luka Mirosevic维护。
一个适用于 iOS 中将文本字段移出键盘位置的通用解决方案。
关于如何在编辑期间将 UITextField
和 UITextView
移动以避开键盘的解决方案有很多 -- 通常,这涉及到观察 UIKeyboardWillShowNotification
和 UIKeyboardWillHideNotification
,或实现 UITextFieldDelegate
代理方法,并调整父视图的框架,或使用 UITableView
的 scrollToRowAtIndexPath:atScrollPosition:animated:
,但大多数提出的解决方案都相当是 DIY 的,并且必须为每个需要它的视图控制器实现。
这是一个相对通用的、即插即用的解决方案:用于处理一切的 UIScrollView
和 UITableView
子类。
当键盘即将出现时,子类将找到即将编辑的子视图,并调整其框架和内容偏移量以确保该视图可见,并匹配键盘弹出动画。当键盘消失时,它将恢复先前的大小。
它应该适用于基本上任何设置,无论是基于 UITableView
的界面,还是由手动放置的视图组成的界面。
它还自动将键盘上的“下一个”按钮与文本字段切换选项连接起来。
对于与 UITableViewController
类一起使用,将 TPKeyboardAvoidingTableView.m
和 TPKeyboardAvoidingTableView.h
添加到您的项目中,并将您的 UITableView 设置为 xib 中的 TPKeyboardAvoidingTableView
。如果您没有在控制器中使用 xib,我知道没有简单的方法可以使它的TableView成为一个自定义类:最直接的方法是为它创建一个 xib。
对于非 UITableViewControllers
,将 TPKeyboardAvoidingScrollView.m
和 TPKeyboardAvoidingScrollView.h
源文件添加到您的项目中,在视图控制器的 xib 中添加一个 UIScrollView
,将滚动视图的类设置为 TPKeyboardAvoidingScrollView
,并将在其中放置所有控制规则。您还可以无 Xib 编程创建它 - 换句话说,只需使用 TPKeyboardAvoidingScrollView 作为顶级视图。
要禁用自动“下一个”按钮功能,将 UITextField 的返回键类型更改为任何非 UIReturnKeyDefault
类型。
这些类目前调整contentInset参数,以避免内容移动到键盘下方。这是通过调整视图的边界而不是调整frame来工作的。这样做是为了 workaround 一个 iOS 的 bug,该 bug 导致动画跳闸,视图先向上跳然后平稳下来。为了方便此 workaround,contentSize 保持与视图边界至少相同的大小。
版权所有(C)2013 迈克尔·泰森
本软件“按原样”提供,不提供任何明确的或暗示的保证。在任何情况下,作者将不对使用此软件产生的任何损害承担责任。
任何人都可以出于任何目的(包括商业应用)使用此软件,并自由修改和重新分发,前提是遵守以下限制:
此软件的来源不得被误传;你不可以声称是你编写了原始软件。如果你将此软件用于产品,产品文档中的致谢会受到欢迎,但不是必需的。
变更的源代码版本必须明确标记为修改版,并且不得被误传为原始软件。
本通知不得从任何源代码发行版本中移除或修改。
迈克尔·泰森,美味的像素
[email protected]