2012-02-07 39 views
0

我真的想製作一個鍵盤,它是UIKeyboardTypeNumberPad,而不是它在按下4按鈕時在文本框中顯示4,我希望它突出顯示G大約5秒,而突出顯示時,如果再按一下它去h,然後去所有的字母,所以2會開始A然後B然後C如果多次點擊?我在IOS上發現他們內置了一個這樣做,但它不完全是UIKeyboardTypeNumberPad和它的日語,它會顯示,並輸入美國,但仍然有一些日本人,很難使用,因爲它不是一個真正的滿UIKeyboardTypeNumberPad。例如0是空格或轉到下一個字母,而不是日本的字母。所以我如何編碼我的應用程序?UIKeyboardTypeNumberPad鍵入字母?

回答

0

正確的方法做,這是創建自己的「鍵盤」你想要的按鈕和操作視圖,並將其分配給文本字段的inputView財產。然後系統將顯示您的鍵盤而不是正常的系統鍵盤。鍵盤視圖(或視圖控制器)將需要引用迴文本字段,因此它可以使用UITextInput方法來響應用戶的觸摸。

「Custom Views for Data Input」 in Text, Web, and Editing Programming Guide for iOS
UITextInput Protocol Reference

+0

不是我真正想到的,如果你看到舊手機,我想諾基亞?在屏幕上顯示所有數字,在文本中,按2,它會顯示一個高亮顯示的內容,然後在大約5秒鐘後消失,英鎊就是我想的空間,等等,只需點擊字母,theres系統中的鍵盤內置功能可以實現此功能,但是它的日語功能可以使用美國語言,但它沒有間距和按鈕,而是點擊兩個按鈕來更改單詞,或者由於日語字典鍵盤,它不能關閉。 – Maximilian 2012-02-08 02:08:57

+0

是的,我知道你在說什麼。您可以使用我鏈接的API來構建該系統。 – 2012-02-08 04:02:33

0

我不認爲這是一個好方法,但技術上你可以。不要使用鍵盤,而要使用輸入字段。我的意思是,例如,UITextViewDelegate定義了–textView:shouldChangeTextInRange:replacementText:方法。當用戶嘗試更改UITextView中的文本時,將調用此方法。然後您可以手動更改文本並返回NO以忽略用戶輸入。

在下面的例子中,當用戶鍵入'0'時,將會添加'G'(代表我的想法)。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    NSString *correctReplacement = [text stringByReplacingOccurrencesOfString:@"0" withString:@"G"]; 
    textView.text = [textView.text stringByAppendingString:correctReplacement]; 
    return NO; 
} 
+0

的感謝!這是非常接近的,但是我不能使用它,因爲如果這個功能與一個字母一起工作,那麼舊手機會給你5秒左右的時間,如果你再次按下2,那麼這個字母就會改變並轉向。但我想我可以使代碼工作,如果我使用一個數組,它會在給定時間周圍數組...希望工程:] – Maximilian 2012-02-08 02:10:40

+0

嗯。我明白你想要什麼。並且給出的代碼不是爲了解決你的問題,而是爲了說明'UITextViewDelegate'的用法(導致你的問題的代碼更復雜)。爲了解決您的問題,您應該添加一些變量,例如「上次敲擊鍵」和「上次鍵敲擊次數」,並在計時器啓動後清除這些值。像這樣的東西。 – kpower 2012-02-08 02:26:09