在添加到UITextField输入法的“完成”按钮上添加验证方法

时间:2013-04-06 16:43:05

标签: ios validation uibarbuttonitem uitoolbar

当我按下添加的'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];    
 }

3 个答案:

答案 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
}