2013-02-21 115 views
1

我有一個自定義鍵盤,它使用UITextInput委託進行設置,以將文本發送到當前文本字段。但我還需要發送一個'return'按鈕來調用textFieldShouldReturn方法,據我所知,UITextInput不允許這樣做。 (除非返回鍵有某種特定字符?)使用自定義鍵盤調用textFieldShouldReturn

那麼,如何將「返回」鍵按下值傳遞給文本字段以觸發textFieldShouldReturn?

+0

在這裏看到我的答案:http://stackoverflow.com/questions/13205160/how-do-i-retrieve-keystrokes-from-a-custom-keyboard-on-an-ios-app/13205494#13205494 – rmaddy 2013-02-21 16:35:14

回答

1

您應該實現這一點:

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

用戶正在使用自定義鍵盤。提問者想知道如何以編程方式調用此方法。 – 2013-02-21 17:02:03

2

爲返回鍵的特定字符是\n加入,爲您的字符串的結尾就會把光標放在下一行...

*然後要實際調用textFieldShouldReturn方法,如果您仍然因爲某種原因想要這樣做,那麼就像調用任何方法一樣調用它。

+0

我想我會說話。我需要這個'返回'鍵按下來關閉鍵盤。這意味着它是一個調用textFieldShouldReturn方法的按鍵。就像你要正常關閉鍵盤一樣。 – JMD 2013-02-21 15:48:22

+0

我很困惑...你有一個自定義的鍵盤,你想在你的自定義鍵盤上的返回鍵,當它被按下時會隱藏鍵盤? – 2013-02-21 15:49:26

+0

是的。我有一個自定義的鍵盤,當用戶完成輸入數據,或者他們想要做別的事情時,我有一個'完成'按鈕,他們可以按下來關閉鍵盤。問題是,基本上,我怎麼做到這一點,因爲我目前只有一個UITextInput委託設置。 – JMD 2013-02-21 15:51:35

0

由於您已經在使用自定義鍵盤,因此您在這裏朝着錯誤的方向前進。這應該不需要使用UITextFieldDelegate來解決返回鍵檢測問題。

textFieldShouldReturn:是UITextField的委託方法,用於檢測用戶何時按下返回鍵。如果你沒有這個方法,你必須使用textField:shouldChangeCharactersInRange:replacementString:來檢測一個普通的UIKeyboard中的換行符,這將是一個令人頭痛的問題。

但是,如果你的鍵盤上有一個特殊的按鈕,應該做一些特殊的事情,直接將該按鈕直接連接到你的IBAction方法。

因此,像這樣:

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [self returnKeyPressed:textField]; 
    return NO; 
} 

- (IBAction)returnKeyPressed:(id)sender { 
    // Do whatever you want done 
} 

如連接您的自定義鍵returnKeyPressed:,既有硬件鍵盤和虛擬鍵盤的自定義將在returnKeyPressed結束:和行爲是一致的。

您可能想要定義一個小協議來確保您的委託支持returnKeyPressed:除了UITextFieldDelegate方法。

+0

我在哪裏實現returnKeyPressed方法?與文本字段的視圖?或鍵盤的視圖?我假設鍵盤的視圖,然後用文本字段將它委託給視圖? – JMD 2013-02-21 16:19:36

+0

@AlleyGator這不是錯誤的方向。如果正確完成,無論是設置普通鍵盤還是自定義鍵盤,文本字段都應該保持不變。這意味着視圖控制器實現了通常的文本字段委託方法。視圖控制器不需要知道正在使用自定義鍵盤。當然,這意味着自定義鍵盤必須正確實現,以便在敲擊鍵時調用正確的委託方法。 – rmaddy 2013-02-21 16:38:20

+0

@JesseDurham如果它可以像普通的返回鍵一樣執行相同的操作並且不需要特殊的行爲,那麼可以輕鬆地執行第二個選項。在鍵盤視圖中實現該方法,並使用文本字段將其委託給視圖。我不得不猜測你的設計,但對於簡單的情況應該是可以的。 – AlleyGator 2013-02-21 22:18:32