2010-08-26 142 views
120

單擊文本框會使鍵盤出現。 當用戶按下返回鍵時,我該如何隱藏它?的UITextField當我按下UITextField中的返回鍵時如何隱藏鍵盤?

+12

關於Stack Overflow的好處是很多問題已經被回答,特別是簡單的問題。因此,請在詢問之前先查找答案。看,這很簡單:http://stackoverflow.com/search?q=iphone+hide+keyboard – Felixyz 2010-08-26 10:57:49

+0

這是UITextfield的一個子類,根據文本/字符串條件動態更改UIReturnKey: https://github.com/ codeinteractiveapps/OBReturnKeyTextField – CodeInteractive 2015-10-21 01:09:24

回答

246

首先讓你的文件委託的UITextField,然後此方法添加到您的代碼..

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 

    [textField resignFirstResponder]; 
    return YES; 
} 
+1

好奇,爲什麼不必要?通常你會在這種情況下看到警告。 – pixelfreak 2012-03-10 08:59:44

+7

如果您使用Interface Builder創建文件委託,那麼在.h文件中不需要。 – Saurabh 2012-03-10 11:07:24

+1

在.h文件中添加並在viewdidload中設置委託[yourTextField setDelegate:self];將完成它! – Umitk 2015-07-16 05:35:32

1

組代表,並通過騎,textFieldShouldReturn方法,該方法只寫下面兩行:

[textField resignFirstResponder]; 
return YES; 

就是這樣。在編寫代碼之前,不要忘記設置UITextField的代理,並將屬性窗口中的返回鍵類型設置爲「完成」(command + shift + I)。

57

viewDidLoad聲明:

[yourTextField setDelegate:self];

然後,包括委託方法的重寫:

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

對'setDelegate:'提醒+1。肯定已經忘記了,代碼以前沒有工作。 – piperchester 2014-01-18 23:22:00

+2

不應該這是textField,而不是它傳入的yourTextField? – 2014-04-09 09:47:50

+0

是一種說法,聲明您的textField – 2014-10-17 20:18:36

1

試試這個,

[textField setDelegate: self]; 

然後,在文本框的委託方法

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

這不是最好的做法。 – orafaelreis 2014-02-15 17:41:47

+0

需要在接口定義中使用UITextFieldDelegate。 – 2018-03-06 08:47:26

+0

@AlpAltunel:感謝您的評論,這是4年前。 – 2018-03-07 03:21:20

11

在SWIFT這樣做:
首先在你的ViewController實現這個UITextFieldDelegate 對於如。

class MyViewController: UIViewController, UITextFieldDelegate { 
.... 
} 

現在添加一個委託到要取消鍵盤時,在回報中viewDidLoad方法如下面或者要初始化它被點擊一個TextField。 例如。

override func viewDidLoad() { 

    super.viewDidLoad() 
    myTextField.delegate = self 
} 

現在添加此方法。

func textFieldShouldReturn(textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 
    return true 
} 
+1

如果您在IB中設置委託,第二步不是必不可少的。 – 2016-01-04 20:41:44

8

試試這個在斯威夫特

第1步:設置委託作爲自我的textField

textField.delegate = self 

第2步:添加下面的類聲明此UITextFieldDelegate,

extension YourClassName: UITextFieldDelegate { 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    } 
} 
0
[textField resignFirstResponder]; 

使用此

1

您可以將「觸發初級行動」與IBAction爲(右鍵單擊的UITextField),你可以辭職第一響應者(無授權)。示例 (Swift 4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) { 
    sender.resignFirstResponder() 
    ... 
} 
+0

如果使用故事板,則爲首選方式。 – lal 2018-01-24 19:52:00

相關問題