2011-07-19 34 views
7

認真一樣通過這個打算後...駁回急救員/鍵盤帶有多個文本框

Easy way to dismiss keyboard?

...我有多個TextFields和幾個TextViews。是否沒有辦法讓所有文本字段擁有一個批次或組Dismiss First Responder?我需要爲每個領域制定方法嗎?也許我忽略了那個環節中的某些東西?

也許我可以按照這樣的事情:

https://stackoverflow.com/questions/3282837/problem-with-multiple-textfields-to-make-the-keyboard-dissapear

將在後面的有意義嗎?提前致謝。

= = = = = = = = = = = = = = = = - = - = - = = = - = - = - = - = -

我想通了....

Controller.h 

@interface Controller : UIViewController <UITextFieldDelegate> { 
    IBOutlet UITextField *clickedDone; 
} 
@property (nonatomic, retain) IBOutlet UITextField *clickedDone; 

Controller.m 

#import "Controller.h" 
@implementation Controller 
@synthesize clickedDone; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [clickedDone setDelegate:self]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES;  
} 
+1

只有一個字段是第一個響應者,你只需要辭職的那一個。 – progrmr

+0

到另一個SO問題的鏈接已經死亡。 – fatuhoku

回答

4
clickedDone.returnKeyType = UIReturnKeyDone; // in viewDidLoad 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    return YES;  
} 
30

的觀點有一個endEditing:方法可以使用。文檔說

導致視圖(或其嵌入的文本字段之一)退出第一個響應者狀態。

在視圖控制器,你可以叫:

[[self view] endEditing:YES]; 
+1

謝謝!你的解決方案是最好的,特別是當有很多領域需要處理時。 – TCB13

+0

這是最好的解決方案。謝謝! – Macondo2Seattle

+0

這應該是被接受的答案。 – mnl

1

最好的答案是:

  1. 新增UITextFieldDelegate協議,以您的視圖 - 控制@interface 的ViewController:UIViewController中
  2. 在你的xib中,選擇你的Ulitlites部分中的textField在「Connections Inspector」小節的右邊的 XCode的側窗格中, 將textField的委託與.xib的「文件所有者」鏈接起來。
  3. 在您的視圖控制器的實現,包括follwing

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    return YES;  
} 
2

它很容易了。根據您的使用情況,您可以採用不同的方法。在我的情況下,我有UITableViewController中的多個文本字段。我所做的是這樣的:

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    [self.view endEditing:YES]; 
}