2011-04-11 36 views
1

我想讓鍵盤消失,當屏幕被觸摸,一個問題,這是一個問題,所有的答案都是stackoverflow。由於這裏有一個線程,當按下回車鍵時,我能夠讓鍵盤消失。我沒有幸運的背景觸摸辭職的第一響應。該方法正在進入,我有一個NSLog的方法說,「在backgroundTouched」,但鍵盤仍然在那裏。Obj C - 先接觸第一響應者UIView

我試着讓UIView成爲一個UIControl類,所以我可以使用觸摸事件。 journalComment是一個UITextView。

-(IBAction)backgroundTouched:(id)sender 
    { 
     [journalComment resignFirstResponder]; 
     NSLog(@ "in backgroundTouched"); 

} 

我也試過在所有調用backGroundTouched方法下都有一個看不見的按鈕。我認爲這可能是我在界面生成器中遺漏了一些東西,但我不確定是什麼。

謝謝你的幫助!

這是做什麼按鈕的工作原理:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
replacementText:(NSString *)text 
{ 
    // Any new character added is passed in as the "text" parameter 
    if ([text isEqualToString:@"\n"]) { 
     // Be sure to test for equality using the "isEqualToString" message 
     [textView resignFirstResponder]; 

     // Return FALSE so that the final '\n' character doesn't get added 
     return FALSE; 
    } 
    // For any other character return TRUE so that the text gets added to the view 
    return TRUE; 
} 
+0

你是否在視圖中的所有輸入元素的第一響應者? – 2011-04-11 15:36:19

+0

這是一個帶有三頁按鈕的滾動視圖,「好心情,壞心情等等」,然後是一個textview評論框。我是否需要先按下按鈕,因爲它們先被觸摸。我將添加適用於完成按鈕的代碼。 – rd42 2011-04-11 15:43:27

+0

也嘗試爲滾動視圖重新分配第一響應者。 – 2011-04-11 16:23:56

回答

1

試試這個。我們遇到了這個問題,但最終找到了正確的解決方案。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

     [yourtextfield resignFirstResponder]; 

     // you can have multiple textfields here 


    } 

這應該可以解決鍵盤在推送背景時不會消失的問題。

+0

謝謝。對於newb問題抱歉,但是一旦我將它放入.m和.h文件中,我如何將它與界面構建器中的文本字段綁定?這是一個CTRL從文件所有者拖動到文本字段選擇我已經編程創建的UITextField? – rd42 2011-04-12 12:57:22

+0

@ rd42您應該只需要將該片段添加到.m文件,它應該可以工作。 如果沒有,請隨時添加更多代碼。 – doge 2011-04-12 13:35:00

+0

好吧,如果我找出其他代碼會有幫助:),我會把它放進去。謝謝你的幫助。 – rd42 2011-04-12 13:56:01

2

我發現下面的代碼工作與我的文本視圖(而不是文本字段)的情況下儘量的委託方法:

首先你建立一個水龍頭手勢識別到你的觀點:

- (void)viewDidLoad{ 

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] 
     initWithTarget:self 
       action:@selector(tap:)]; 
    tapRecognizer.delegate = self; 
    [self.view addGestureRecognizer:tapRecognizer]; 

} 

,然後在你的水龍頭方法中:

- (void)tap:(id)sender 
{ 
// use to make the view or any subview that is the first responder resign (optionally force)  
[[self view] endEditing:YES]; 
} 

這應該讓你的鍵盤在視圖中的任何地方被解僱。

希望這有助於

+0

嗨xRab,很好的答案,謝謝你的建議[這裏](http://stackoverflow.com/a/39306423/1894067)如果你總是對這種線程感興趣,我已經將我的代碼改進到最新迅速 – 2017-01-20 08:43:46

相關問題