通过分类向所有 UITextField 委托方法添加 blocks,无需子类化。还允许在没有设置 blocks 的情况下使用委托方法。
#import <UITextField+Blocks.h>
UITextField *aTextField;
[aTextField setShouldBegindEditingBlock:^BOOL(UITextField *textField) {
// do your stuff here
return YES;
}];
[aTextField setDidBeginEditingBlock:^(UITextField *textField) {
// do your stuff here
}];
[aTextField setShouldEndEditingBlock:^BOOL(UITextField *textField) {
// do your stuff here
return YES;
}];
[aTextField setDidEndEditingBlock:^BOOL(UITextField *textField) {
// do your stuff here
}];
[aTextField setShouldChangeCharactersInRangeBlock:^BOOL(UITextField *textField, NSRange range, NSString *replacementString) {
// do your stuff here
return YES;
}];
[aTextField setShouldClearBlock:^BOOL(UITextField *textField) {
// do your stuff here
return NO;
}];
[aTextField setShouldReturnBlock:^BOOL(UITextField *textField) {
// do your stuff here
return NO;
}];
记住,您也可以使用普通的委托方法来处理所有您没有定义为 blocks 的方法。
在这个例子中,shouldBeginEditing 被定义为 blocks,而 didEndEditing 是一个委托方法
aTextField.delegate = self;
[aTextField setShouldBegindEditingBlock:^BOOL(UITextField *textField) {
// do your stuff here
return YES;
}];
- (void)textFieldDidEndEditing:(UITextField *)textField
{
// do your stuff here
}
版权 (C) 2013 由 Håkon Bogen 开发
特此授予任何人获取此软件及其相关文档文件("软件")副本的权利,免费使用该软件,不受任何限制,包括但不限于对本软件的使用权、复制权、修改权、合并权、发布权、分发权、再许可权及/或出售副 本权,并允许向提供该软件的人员使用,前提是同意以下条件
上述版权声明和本许可声明应包括在软件的所有副本或实质部分中。
SOFTWARE"AS IS",没有明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵犯知识产权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任是基于合同、侵权或其他,因使用软件或与之相关的软件的使用或其他行为而产生,不论其是否在软件使用过程中或在软件使用期间产生。