当我按下添加的'Done'UIBarButtonItem时,我试图在UITextField中输入输入,但由于它的目标设置为我编辑的UITextField,我无法调用自定义验证方法。有谁知道如何解决这个问题? 我试图通过用validateInput(一个自定义方法)替换“resignFirstReponder”来添加自定义方法,但它会抛出一个异常错误,因为目标textField没有被调用的方法,我猜想。如果我将目标设置为'self',那么它不会将'done'按钮添加到UITextField。请帮忙。
对不起,我没有把整个代码。以下是围绕此功能的完整代码:
- (void) addDoneButton: (UITextField *) textField
{
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:textField action:@selector(resignFirstResponder)];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
toolbar.items = [NSArray arrayWithObject:barButton];
textField.inputAccessoryView = toolbar;
}
- (void) viewDidLoad{
[super viewDidLoad];
[self addDoneButton:txtBox];
}
答案 0 :(得分:0)
只需在barButtom
媒体资源上设置操作:
[barButton setAction:@selector(myValidationMetod)];
在该方法内的textField上使用任何验证。
答案 1 :(得分:0)
目标应该是我自己和动作:@selector(yourCustomMethod)。
-(void)yourCustomMethod
{
if(textField.length>0)
{
NSLog(@"textField Validated");
}
}
答案 2 :(得分:0)
您需要做的是让完成按钮调用控制器上的方法,然后控制器将负责验证text
并调用resignFirstResponder
。
这将是这样的
UIBarButtonItem *barButton =
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(doneTapped)];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
toolbar.items = @[ barButton ];
self.textField.inputAccessoryView = toolbar;
现在您需要实现doneTapped
方法
- (void)doneTapped
{
[self.textField resignFirstResponder];
NSString *text = self.textField.text;
// validate text
}