https://github.com/chrismiles/EZForm
EZForm是一个针对iOS的表单处理和验证库。它设计成与用户界面布局解耦,让您可以自由地以任何方式展示表单UI。但这并不意味着EZForm不会与您的UI集成。您告诉EZForm您想要处理每个表单字段的控件和视图,EZForm将负责输入验证、输入过滤以及在字段值更改时更新视图。
在不妨碍您的情况下简化表单处理和验证。
与表单的用户界面布局解耦。您可以以任何方式设计表单的界面:使用Interface Builder、使用代码或您选择的其他方式。
通过与之协同工作来协助管理表单输入和显示,这涉及到您告诉它的任何用户界面控件和视图。
在请求的情况下提供常见的输入便利,例如:带有文本字段之间导航的键盘输入配件;自动滚动或重新定位视图以保持输入字段可见;以及无效字段指示器管理。
包括文本、布尔、单选按钮在内的表单字段类型。
文本字段可以与以下类型的视图集成:UITextField、UITextView、UILabel。
布尔字段可以与以下类型的视图集成:UISwitch、UIButton、UITableViewCell。
单选按钮字段可以与以下类型的视图集成:UILabel。
基于块��证器。可以将用户定义的输入验证规则作为块对象添加到字段中。
EZForm包含一些常见的验证器。
基于块的输入过滤器。输入过滤器控制用户可以输入的内容。例如,可以将输入过滤器添加到文本字段,仅允许输入数字字符。
EZForm包含一些常见的输入过滤器。
标准的输入配件和字段导航。使用一个方法调用,EZForm可以将一个带有字段导航和完成按钮的工具栏添加到文本字段中,类似于Mobile Safari的输入配件。字段间的导航将由EZForm自动处理。
自动视图滚动以保持活动文本字段可见。启用该选项后,EZForm将调整滚动视图、表格视图或任意视图,以保持正在编辑的文本字段在屏幕上,并且不被键盘覆盖。
无效字段指示器。在验证失败时,EZForm可以自动在文本字段上显示无效指示视图。无效指示视图可以是用户提供的,也可以是由EZForm提供的。
EZForm附带一个可选的表格视图控制器子类,可用于方便地展示单选选择项,即EZFormRadioChoiceViewController
。
使用Git克隆源文件。
将EZForm/EZForm.xcodeproj添加到您的项目中(或工作区)。
将libEZForm.a
添加到项目的Linked Frameworks and Libraries中。
在目标构建设置中的“Other Linker Flags”中添加-ObjC
。
导入主头文件
#import <EZForm/EZForm.h>
创建一个EZForm实例,并向其中添加一些EZFormField子类实例。例如
- (void)initializeForm
{
/*
* Create EZForm instance to manage the form.
*/
_myForm = [[EZForm alloc] init];
_myForm.inputAccessoryType = EZFormInputAccessoryTypeStandard;
_myForm.delegate = self;
/*
* Add an EZFormTextField instance to handle the name field.
* Enables a validation rule of 1 character minimum.
* Limits the input text field to 32 characters maximum (when hooked up to a control).
*/
EZFormTextField *nameField = [[EZFormTextField alloc] initWithKey:@"name"];
nameField.validationMinCharacters = 1;
nameField.inputMaxCharacters = 32;
[_myForm addFormField:nameField];
/*
* Add an EZFormTextField instance to handle the email address field.
* Enables a validation rule that requires an email address format "[email protected]"
* Limits the input text field to 128 characters maximum and filters input
* to assist with entering a valid email address (when hooked up to a control).
*/
EZFormTextField *emailField = [[EZFormTextField alloc] initWithKey:@"email"];
emailField.inputMaxCharacters = 128;
[emailField addValidator:EZFormEmailAddressValidator];
[emailField addInputFilter:EZFormEmailAddressInputFilter];
[_myForm addFormField:emailField];
}
您可以直接根据用户输入更新表单字段。但更常见的是,您将输入控件直接连接到EZForm,这样它会自动处理输入、验证、字段导航等操作。例如
- (void)viewDidLoad
{
[super viewDidLoad];
/* Wire up form fields to user interface elements.
* This needs to be done after the views are loaded (e.g. in viewDidLoad).
*/
EZFormTextField *nameField = [_myForm formFieldForKey:@"name"];
[nameField useTextField:self.nameTextField];
EZFormTextField *emailField = [_myForm formFieldForKey:@"email"];
[emailField useTextField:self.emailTextField];
/* Automatically scroll (or move) the given view if needed to
* keep the active form field control visible.
*/
[_myForm autoScrollViewForKeyboardInput:self.tableView];
}
如果您将任何视图连接到EZForm,您应该在viewDidUnload中解除连接,您可以通过一个调用方法来实现这一点
- (void)viewDidUnload
{
[super viewDidUnload];
[_myForm unwireUserViews];
}
查看示例应用程序源代码以获取更多关于如何与EZForm一起工作的示例。
源代码中包含一个示例,是一个包含一些表单实现的通用iOS应用程序。
EZForm附带完整的API文档,可直接使用Xcode文档集。使用appledoc生成并将文档集安装到Xcode - http://gentlebytes.com/appledoc/
要从命令行使用appledoc生成文档集,请切换到源目录的根目录并输入
./gen-apple-doc-set
EZForm与iOS 6及其以上版本兼容。EZForm使用自动引用计数(ARC)。
源代码中包含的示例应用程序要求iOS 6。
EZForm使用自动引用计数(ARC)。
EZForm以开源形式提供,无任何保修和支持保证。然而,我们尽力解决在GitHub上提出的问题。
如果您需要帮助集成EZForm或将它修改为您所需的形式,请联系作者Chris Miles进行咨询服务机会 - [email protected]。
EZForm已在以下iOS项目中使用
EZForm版权(c)2011-2013 Chris Miles,并作为开源软件按照MIT许可证发布
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.