2012-03-01 80 views
4

我有一個按鈕和一個文本框。點擊按鈕時,我只想讓鍵盤消失。爲什麼我的代碼不起作用。textFieldShouldReturn不起作用(在XCode 4上使用情節提要)

更新:我看到了一些關於文件的所有者。我不明白如何在XCode4中執行此操作我使用故事板,但看不到任何文件所有者圖標。

更新2:我發現了一個tut http://www.techotopia.com/index.php/Writing_iOS_4_Code_to_Hide_the_iPhone_Keyboard_%28Xcode_4%29,但它使用XCode 4上的XIB文件而非故事板。如何與故事板做到這一點?

myViewController.h

@interface myViewController : UIViewController <UITextFieldDelegate> 
{ 
    UITextField *myTextField; 
} 

@property (retain, nonatomic) IBOutlet UITextField *myTextField; 

myViewController.m

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

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    myTextField.delegate = self; 
} 

- (IBAction)DoCalc:(id)sender { 
     // ... 
} 
+0

由於textField是在IB中創建的。它是否與myTextField引用連接。另外,myTtextField中還有一個額外的字符'T'。 – Ravin 2012-03-01 15:40:22

+0

謝謝我修復了T,但是隱藏鍵盤的問題是nit鏈接到它:) – user310291 2012-03-01 18:05:35

回答

3

textFieldShouldReturn:應該返回NO隱藏鍵盤。還有一件事 - 不要設置第一響應者self[textField resignFirstResponder]就夠了,iOS本身應該是nextResponder

+0

謝謝我試過了,但它仍然不起作用另一個建議? :) – user310291 2012-03-01 15:17:13

+0

如果你已經實現了'textFieldShouldEndEditing:'方法,它應該返回YES。 – 2012-03-01 15:23:41

+0

不,我沒有實現textFieldShouldEndEditing – user310291 2012-03-01 16:24:26

1

可以隱藏在這種方法中,keybord ...

- (void)textFieldDidEndEditing:(UITextField *)textField { 

    [textField resignFirstResponder]; 
} 
+0

謝謝我也試過,但它仍然不工作或者另一個建議? :) – user310291 2012-03-01 15:17:35

+1

你設置了textfield委託嗎? – Aravindhan 2012-03-01 15:44:08

+0

是因爲在我的代碼中有myTextField.delegate = self; – user310291 2012-03-01 16:22:54

1

刪除[self becomeFirstResponder];應該這樣做。

resignFirstResponder是關閉鍵盤。而becomeFirstResponder則是打開鍵盤。所以在你的代碼中,你正在關閉,然後再次打開鍵盤。最後一個動作是打開鍵盤,因此它不會關閉。

你可以看看UIResponder Class作爲UITextField

+0

真的我刪除它(我跟着一個說,這樣做的tut)。它仍然沒有成功。 – user310291 2012-03-01 16:25:08

+0

更新:我看到了一些關於文件所有者的信息。我不明白如何在XCode4中執行此操作我使用故事板,但看不到任何文件所有者圖標。 – user310291 2012-03-01 16:28:34

+0

我認爲'textFieldShouldReturn'甚至沒有被調用。你應該檢查你的故事板中的'UITextField'鏈接。 – HelmiB 2012-03-01 16:30:51

5

超檢查,看看是否你已經寫入myViewController.m的textFieldShouldReturn功能甚至被調用。在裏面設置一個斷點,然後運行模擬器。按下鍵盤上的返回鍵。如果程序沒有中斷,那麼你寫的函數沒有被調用。

如果是這樣,這是因爲您尚未將UIResponder職責委派給您的視圖控制器。確保你正在爲你正在使用的UITextField的myViewController類委派響應者職責。

在故事板中,通過控制 - 從UITextField小部件拖動到場景下方的黃色圓球,然後從出現的上下文菜單中選擇「委託」。