2009-05-05 74 views
20

我在iphone應用程序中有一個文本輸入框,當您在模擬器中觸摸它時,彈出鍵盤。但是沒有辦法擺脫它。 其他網頁提供的解決方案,沒有解釋他們爲什麼應該工作,並且他們不適合我。 一個說讓文本框的委託您的uiview然後調用resignfirstresponder對象,但它永遠不會被調用。 有什麼建議嗎?任何人都可以解釋實際發生的事情嗎?如果我知道設計範例是什麼,我可以自己弄清楚...如何使鍵盤在iPhone模擬器中消失

也許我應該只是放一個「去」按鈕,所以我有一些東西讓焦點遠離文本字段?

回答

19

一種方式做到這一點是設置一個對象作爲代表到文本字段,並落實

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

在你打電話[textField resignFirstResponder]

這將導致鍵盤的時候,他們推到消失返回/去/完成按鈕(無論您設置右下角的鍵盤鍵)。

有關更多信息,請參閱UITextFieldDelegate參考。

+1

當第一次開始了,我發現[「您的第一個iOS應用程序「教程](http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html)是有幫助的。有關此答案的更多信息,請參見[「實現視圖控制器」]中的「文本字段的委託」小節(http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/文章/ 06_ImplementingController.html)。 – sage 2010-12-29 04:16:14

+1

夠簡單,但爲什麼這不是默認行爲?儘管如此,這個工程實現了上面的接口,並將IB中的'委託'連接連接到文件的所有者。 – Bobby 2011-09-01 22:16:50

5

- (BOOL)textFieldShouldReturn:(UITextField *)textField在按下返回按鈕時調用委託。

您想撥打[textField resignFirstResponder],然後返回YES。這應該夠了吧。還要確保代表已設置。如果有疑問,請添加一個斷點或NSLog並進行驗證。

16

要解僱鍵盤,您可以使用TextField委託。

要使用此步驟,請按照下列步驟操作...
1.在您的viewController中。 h添加這樣的委託聲明:

@interface ViewController : UIViewController <UITextFieldDelegate> { 
    }
2.在你的viewController。 調用此方法:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
3.然後寫這樣的代碼:
- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
    }
4.最後一步是設置TextField的委託:
- (void)viewDidLoad { 
     [super viewDidLoad]; 
     self.textField.delegate = self; 
    }