2014-04-01 60 views
0

我有一個ViewController中的四個文本字段,並希望禁用其中兩個鍵盤(textField1和textField2)。如何禁用相同ViewController中的特定UITextField的鍵盤?

我曾嘗試在viewDidLoad中

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField) { 
    if ([self.textField1 isTouchInside] || [self.textField2 isTouchInside] { 
     return NO; 
    } else { 
     return YES; 
    } 
} 

分配文本字段爲代表然而之後實施以下,這完全禁用鍵盤的視圖控制器,所以試圖編輯文字欄和文字欄時,它不會出現。我怎樣才能解決這個問題?

例如,是否有一種方法可以在編輯完textField後再次刷新運行textFieldShouldBeginEditing方法?

此外,我知道我可以創建一個標籤來完成類似的事情,但我更喜歡在我的情況下使用文本字段。

編輯:所以我遺漏了一個很大的細節。當按下textField1和2時,我發佈了一個IBaction。但是,Lootsch的回答給了我一個想法。

在textField1的/ 2Pressed IB動作,我跑了textfield.enable:沒有方法,然後我重新啓用他們,當我開除其提交數據到文本框的第二個動作,如下面

- (IBAction)textField1Pressed:(id)sender { 
    self.textField.Enabled = NO; 
} 

- (IBAction)submitToTextField1:(id)sender { 
    self.textField.text = @"blah blah"; 
    self.textField.Enabled = YES;  
} 

雖然,這需要有兩個進入退出動作,但它對我有效。此外,我不必操縱這個解決方案的textFieldShouldBeginEditing方法。

回答

1

,應禁用這兩個文本框(代碼或通過IB),或者你可以禁用用戶交互(不同的外觀,功能相同):

textField3.enabled = NO; 
textField4.enabled = NO; 

或者:

textField3.userInteractionEnabled = NO; 
textField3.userInteractionEnabled = NO; 

第二種方法不會改變UITextFields的外觀,而第一個將指出,這些TextFields被禁用。

+0

+1好答案和解釋。 – Pawan

+0

感謝您帶領我走上正確的道路。 – fuddson

0

像應該做的

if (textField==textField1 || textField==textField2) [textField resignFirstResponder]; 
+0

-1它總是最好給你的答案的一些解釋 –

0

請試試這個

- (BOOL)textFieldShouldBeginEditing:(*的UITextField)文本框 {

if (textField==self.textField1 || textField==self.textField2) 
{ 
    return NO; 

} 
    else 
{ 
    return YES; 
} 

}

0
- (BOOL)textFieldShouldBeginEditing:(UITextField *)mytextField 
{ 

    if((mytextField.tag == 104) || (mytextField.tag == 105) || (mytextField.tag == 106)) 
    {   
     if(mytextField.tag == 104) 
     { 
      point = 50; 
//   if(textField1.tag == 4) 
      { 
       [self showDatePickerWithTitle:@"Select DOB"]; 
       return NO; 
      } 
      // 

     } 
    } 
else 
{ 
retutn YES; 
} 

//you can also try this piece of code.With tag property of textfield.And make sure your tag is not zero,because the default tag is 0 for the main view.