2012-04-06 170 views
7

我只是不能讓「完成」按鈕退出鍵盤。iOS Xcode鍵盤完成按鈕功能

我在或者Controller.h文件

- (IBAction)textFieldDoneEditing:(id)sender; 

用這個,這對我的Controller.m或者文件

- (IBAction)textFieldDoneEditing:(id)sender { 
    [sender resignFirstResponer]; 
} 

,我在佈線中的.xib部分我混了。

+1

我想你一定忘記爲你的文本框設置'委託'。 – Kjuly 2012-04-06 05:13:31

+0

類似的帖子在Stackoverflow上,按照它。 http://stackoverflow.com/questions/2828826/iphone-keyboard-done-button-and-resignfirstresponder – AsifHabib 2012-11-14 06:50:53

回答

23

使控制器的的UITextField/UITextView中的代表在IB或類似代碼textField.delegate = self;

Editted: 爲此,您需要聲明控制器UITextFieldDelegate/UITextViewDelegate的委託作爲

@interface Controller : <UITextFieldDelegate> { ... 

,則覆蓋該方法:

​​

for UITextField and

-(BOOL)textViewShouldEndEditing:(UITextView *)textView{ 
    [textView resignFirstResponder]; 
    return YES; 
} 

爲UITextView的

+1

controller.h還需要聲明它採用了UITextFieldDelegate協議。 – Marco 2012-04-06 05:15:49

+0

@Marco謝謝。編輯答案。 – skonb 2012-04-06 05:18:42

+1

最後一個工作示例。謝謝 – 2015-03-01 01:25:01

1

在你的.xib,右擊你的文本視圖,拖動到「文件的所有者」,然後單擊「委託」。現在應該工作嗎?

編輯:哎呀,對不起,我是個白癡,做別人的話。如果你不知道如何在代碼中設置委託,那麼你可以在IB中按自己的方式進行操作。

+0

我在代碼中設置了委託,但也必須按照您的建議連接IB中的文本字段,因此感謝發佈此答案。 – 2014-07-31 16:33:46

0

讓我做我的第一筆捐款: 如果您有多個文本字段,它們在@property組(強,非原子)

的* .h

@property (strong, nonatomic) IBOutletCollection(UITextField) NSArray *collectingData; 

* .M

-(BOOL)textFieldShouldReturn:(UITextField *)boxes 
    { 
     for (UITextField *boxes in collectingData) { 
     [boxes resignFirstResponder]; 
    } 
    return YES; 

} 
相關問題