2011-04-01 110 views
4

在我的iPhone應用程序中,我遇到了與鍵盤顯示/隱藏行爲有關的一些問題。在iPhone應用程序中顯示/隱藏鍵盤問題

我有三個文本字段;當單擊第三個文本字段時,我想要顯示UIPickerView並隱藏該文本字段的鍵盤。我可以做。

現在的問題是,如果第一個或第二個文本字段的鍵盤是可見的,並且我點擊第三個文本字段,拾取器就變得可見,但它出現在鍵盤後面(它只在鍵盤後面的第一或第二文本字段)。

那麼,我該怎麼做才能使拾取器本身可見,而不是在那個時候顯示任何鍵盤?

下面是代碼: -

- (空)textFieldDidBeginEditing:(的UITextField *)文本框{

if (textField==thirdTextField) { 

    [scroll setFrame:CGRectMake(00, 48, 320, 160)]; 
    [scroll setContentSize:CGSizeMake(320,335)];   
    [picker setHidden:NO]; 
    [tool1 setFrame:CGRectMake(0,180,320,44)]; 
    [tool1 setHidden:NO]; 
    [self.picker reloadAllComponents]; 

    [firtTextField resignFirstResponder]; 
    [secondTextField resignFirstResponder]; 
    [thirdTextField resignFirstResponder]; 
    } 
else { 
     [scroll setFrame:CGRectMake(00, 48, 320, 200)]; 
     [scroll setContentSize:CGSizeMake(320,335)]; 
     [tool1 setHidden:NO]; 
     [tool1 setFrame:CGRectMake(0,220,320,44)]; 
} 
} 

問題就像是

enter image description here

回答

7

保留三個文本字段作爲控制器的成員。

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if(textField == 3rdTextField){ 
    [self.firstTextField resignFirstResponder]; 
    [self.secondTextField resignFirstResponder]; 
    [self.thirdTextField resignFirstResponder]; 
    } 
} 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 
     if(textField==3rdTextField){ 
      [firstTextField resignFirstResponder]; 
      [secondTextField resignFirstResponder]; 
     } 
     else if(textField==secondTextField){ 
      [firstTextField resignFirstResponder]; 
      [3rdTextField resignFirstResponder]; 
     } 
     else if(textField==firstTextField){ 
      [secondTextField resignFirstResponder]; 
      [3rdTextField resignFirstResponder]; 
     } 

     return YES; 
} 

希望這會幫助你。

+0

感謝您的回覆,但這並沒有工作我不能隱藏我的pickerview前面的鍵盤 – ios 2011-04-01 09:18:21

+0

你可以發佈你的代碼嗎 – 2011-04-01 09:21:59

+0

我已經發布代碼本身現在 – ios 2011-04-01 10:22:34

3

呼叫

[yourTextField resignFirstResponder] 

在所有其他文本字段上使其鍵盤消失。

1

使用resignFirstResponder方法和文本字段。 [textField resignFirstResponder]這將隱藏鍵盤。

+0

我在回答時沒有看到他的回覆。抱歉。 – Jorge 2011-04-01 06:52:17

1

然後當鍵盤變得可見並且有一個名爲isPickerVisible的布爾值時使用通知。
當拾取器變爲可見時,將isPickerVisible設置爲TRUE。
在keyboardDidShow方法中,檢查選取器是否可見。如果它是可見的,然後隱藏它。
添加一個通知:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShow:)
name:UIKeyboardWillShowNotification
object:nil];
而且方法...

- (void)keyboardDidShow:(NSNotification*)notif { 
    if(isPickerVisible) { 
     [self hidePicker]; 
    } 
} 

希望這有助於...

+0

- 1:OP表示該部分已經在工作: ...顯示UIPickerView並隱藏該文本字段的鍵盤。我可以做的。 2011-04-01 08:03:26

+0

@Josh:我認爲這可以解決問題;] – SNR 2011-04-01 13:04:37

0

在 - (BOOL)textFieldShouldBeginEditing:(*的UITextField)文本框方法使用resignFirstResponder所有文本字段除第三個文字以外: -

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
     if(textField==thirdTextField) 
     { 
      [firstTextField resignFirstResponder]; 
      [secondTextField resignFirstResponder]; 
      [textField resignFirstResponder]; 

      [self showPickerView]; 
     } 
     return YES; 
} 
相關問題