CRInputHandler 是一个 UI 辅助类,它有助于在 iOS 应用程序中在聚焦状态下重新定位(如有必要)如 UITextField
和 UITextView
等输入文本。如果您之前从事过 iOS 应用程序中的表单工作,您可能会注意到 iOS 键盘有时会覆盖输入文本,这使得用户体验变得有些痛苦。因此,这个类可以帮您始终显示聚焦时的输入。此外,此类还管理用户对输入文本视图外的触摸动作以隐藏键盘。
此类通过监听 UITextField
和 UITextView
类的事件来工作,因此它不会覆盖这些 UIKit 组件的任何委托方法。
您需要将您的输入文本放入一个 UIScrollView
中,并使用 -(id)initWithContainer:
初始化类。您的视图层次结构应类似于以下内容:
UIView
|-UIScrollView
| |--UITextField
| |--UITextView
|--
主要目标是设置输入视图在 UIScrollView 容器内部。
代码示例
@interface CRViewController ()
{
__weak IBOutlet UITextField * firstNameTF;
__weak IBOutlet UITextField * lastNameTF;
__weak IBOutlet UITextView * bioTV;
__weak IBOutlet UITextField * emailTF;
__weak IBOutlet UITextField * birthdayTF;
__weak IBOutlet UIScrollView * container;
}
@property (nonatomic, strong) CRInputHandler * inputHandler;
@property (nonatomic, strong) NSArray * allInputs;
@end
@implementation CRViewController
- (void)viewDidLoad {
[super viewDidLoad];
_allInputs = @[firstNameTF, lastNameTF, bioTV, emailTF, birthdayTF];
_inputHandler = [[CRInputHandler alloc] initWithContainer:container];
[_inputHandler setFields:_allInputs];
}
如果您想查看示例项目,因此要运行示例项目,请克隆仓库,然后首先从示例目录运行 pod install
iOS 6 或更高版本
Carlos Rios,[email protected]
CRInputHandler 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。