2013-04-06 87 views
1

我想在UITextField中輸入時添加'完成'UIBarButtonItem被按下,但由於其目標設置爲UITextField我正在編輯,我無法調用自定義驗證方法。有沒有人有想法如何解決這個問題? 我試圖通過用validateInput(自定義方法)替換「resignFirstReponder」來添加自定義方法,但它會引發異常錯誤,因爲目標textField沒有調用的方法,我推測。如果我將目標設置爲'self',那麼它不會將'done'按鈕添加到UITextField。請幫忙。在'完成'按鈕上添加驗證方法添加到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

嘿,這是不是你做的方式,請發表你們需要的UI和您想要的功能。你的代碼有很多錯誤。 – satheeshwaran 2013-04-06 16:49:45

+0

謝謝。我明白你的意思。我編輯了代碼。這個可以嗎? – Ryan 2013-04-07 03:31:05

回答

0

只需設定行動的barButtom屬性:

[barButton setAction:@selector(myValidationMetod)]; 

使用對方法內的文本框任何驗證。

0

目標應該是我自我猜測和行動:@selector(yourCustomMethod)。

-(void)yourCustomMethod 
{ 
    if(textField.length>0) 
    { 
     NSLog(@"textField Validated"); 
    } 
} 
+0

謝謝。我將需要使我的自定義方法來驗證輸入。這很有幫助。 – Ryan 2013-04-07 03:34:14

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 
} 
+0

謝謝。這很有幫助,但我沒有正確地問我的問題。所以我更新了我的代碼以提供更多背景。如果我設置目標'self','done'按鈕不起作用...我想我需要將目標設置爲UITextField,我想要'完成'按鈕被連接到。 – Ryan 2013-04-07 03:32:54

+0

你試過這個嗎?目標需要設置爲將處理選擇器的對象。在這種情況下,viewController(self)是處理操作的對象,而不是我試過的textField – 2013-04-07 10:02:24

+0

,但是當我將目標更改爲'self'時,'done'按鈕不起作用。我想用'完成'按鈕關閉鍵盤。我認爲這就是爲什麼當我將目標設置爲「自我」時,按鈕不起作用。不應該將目標設置爲UITextField視圖,因爲它僅在鍵盤出現時出現? – Ryan 2013-04-07 12:55:37