2010-04-04 79 views
5

我有一個自定義的鍵盤,我想在用戶點擊UITextField時顯示。但同時我想在文本框中顯示光標。如果爲canBecomeFirstResponder返回NO,則它不會顯示默認鍵盤,但也不會顯示光標。iPhone - 可能不顯示鍵盤,但仍然顯示在UITextField中的光標?

有人可以幫我嗎?

謝謝。

+0

如何在爲UITextField有用的光標如果沒有鍵盤?不是太多,這可能是爲什麼它不是一個支持的功能。 – psychotik 2010-04-04 07:47:05

+0

有一個自定義鍵盤。這就是爲什麼我不想默認鍵盤顯示,但仍然希望光標,因此用戶知道他在哪裏輸入文字 – Swastik 2010-04-07 10:42:40

+2

這絕對有用。雪莉,你找到答案了嗎? – 2010-10-28 22:55:26

回答

0

我不確定這一點,但爲什麼不只是使用UILabel具有相同的文本字段內容,並裝飾看起來像您的文本字段與光標在其中。當你想要輸入時,將它換成UITextField。

+0

我不希望默認鍵盤出現。如何在UILabel中顯示光標? – Swastik 2010-04-07 10:41:53

+0

嗯,你是說你的自定義鍵盤不是鍵盤,它只是一組按鈕,所以你想假的整個事情? – Andiih 2010-04-07 13:20:31

2

註冊鍵盤的通知觀察員(如要隱藏鍵盤視圖控制器): -

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideKeyboard:) name:UIKeyboardWillShowNotification object:nil]; 

在hideKeyboard認沽:功能: -

-(void)hideKeyboard:(NSNotification *)notification { 

    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) { 
     for (UIView *keyboard in [keyboardWindow subviews]) { 
      if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) { 

       keyboard.alpha = 0; 
      } 
     } 
    } 
} 

(感謝luvieere在thispost向我展示如何獲得鍵盤)

+0

在iOS4中不適用於我。該方法被調用,但沒有視圖有一個前綴的UIKeyboard – 2010-10-28 22:54:56

+0

thnx快樂..真的很有幫助我想顯示光標閃爍在我的文本字段中,而不顯示鍵盤和它的工作真的gr8 ... – 2012-09-17 09:04:30

0

有2個解決方案,您的問題。 1)將鍵盤的alpha設置爲0會使鍵盤不可見......這可能是你想要的。光標將出現。

2)UITextField實現UITextInputTraits協議。當它成爲第一響應者時,它總是會調用鍵盤。您將需要從它或其他類繼承以更改該默認行爲。

祝你好運。

如果您告訴我們您要完成的任務,我們可能會提出更完善的方法來實現它。

玩得開心。

-1

爲什麼你甚至需要光標? 我認爲你需要做的就是當用戶按自己的鍵盤上的按鍵時,你可以更新輸入的文本值。

5

問題的答案是爲您的自定義鍵盤創建一個視圖,然後編輯UITextFieldinputView屬性並將其傳遞給您的自定義鍵盤的視圖。

我希望有幫助。

+0

thanx ArturoVM其工作正常我的 – 2013-01-28 04:46:34

4

看起來像你想要的是一個帶有自定義鍵盤的UITextField。創建類CustomKeyboard : UIView並添加按鈕/佈局視圖。然後,對於您的文本字段,只需將inputView屬性設置爲類CustomKeyboard textField.inputView = customKeyboard;的一個實例即可。您還需要將inputView屬性設置爲readwrite @property (readwrite, retain) UIView *inputView;通過設置inputView屬性,當文本字段變爲第一響應者時,標準iPhone鍵盤不會出現。

+0

如果你不需要自定義鍵盤功能(也許你的文本輸入非常非正統),然後創建一個虛擬的UIView(沒有指定框架),並使得.inputView可以正常工作。然後在你的textField上調用becomeFirstResponder。 – HenryRootTwo 2015-06-29 07:23:19

3

重寫以下UITextFieldDelegate中的兩個方法。注意,這種方法都有效的UITextField和UITextView的(在這種情況下,你覆蓋UITextViewDelegate相應的方法)

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (!textField.inputView) { 
     //hides the keyboard, but still shows the cursor to allow user to view entire text, even if it exceeds the bounds of the textfield 
     textField.inputView = [[UIView alloc] initWithFrame:CGRectZero]; 
    } 
    return YES; 
} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    return NO; 
}