2010-01-28 57 views
6

我想換一個鍵盤的UITextInputTraits,而它在使用....當UIKeyboard在視圖中時,是否可以更改UITextInputTraits?

理想代碼會是這個樣子:

- (IBAction)nameTextDidChange:(UITextField *)sender { 
    if ([sender.text isEqualToString:@""]) { 
     sender.returnKeyType = UIReturnKeyDone; 
    } else { 
     sender.returnKeyType = UIReturnKeySearch; 
    } 
} 

所以...我有一個不同'Return'按鈕爲一個空字符串,因爲我做了一些帶有一些文本的字符串。我上面發佈的代碼不起作用,鍵盤保留它的原始文本輸入特徵。

任何人的想法,或者這是永遠不會工作不管我多麼努力嘗試?

乾杯!

Nick。

感謝迪帕克,這是我實際使用的代碼:

if ([sender.text isEqualToString:@""]) { 
    sender.returnKeyType = UIReturnKeyDone; 

    [sender resignFirstResponder]; 
    [sender becomeFirstResponder]; 
} else if (sender.returnKeyType == UIReturnKeyDone) { 

    NSString *cachedLetter = sender.text; 

    sender.returnKeyType = UIReturnKeySearch; 

    [sender resignFirstResponder]; 
    [sender becomeFirstResponder]; 

    sender.text = cachedLetter; 
} 

回答

5

您可以通過在方法的末尾添加以下行,使這項工作。

if ([textField.text isEqualToString:@""]) { 
    textField.returnKeyType = UIReturnKeyDone; 

    [textField resignFirstResponder]; 
    [textField becomeFirstResponder]; 
} else if (textField.returnKeyType == UIReturnKeyDone) { 
    textField.returnKeyType = UIReturnKeySearch; 

    [textField resignFirstResponder]; 
    [textField becomeFirstResponder]; 
} 

這應該有效。

你基本上打開和關閉它,以便文本輸入改變。第二個如果是確保只在需要時翻轉。

+0

天才,非常感謝。它的工作幾乎完美..唯一沒有奏效的是當你辭去鍵盤時,你丟失了UITextField中的文本 - 所以我只需要緩存它!我會將我在我的問題中使用的確切代碼發佈給其他人。 – 2010-01-29 09:39:46

4

[textField reloadInputViews]似乎這樣的伎倆......

+0

這和Deepak Danduprolu對我的回答一樣有效 – richy 2012-08-27 03:56:48

0

resignFirstResponder/becomeFirstResponder & reloadInputViews有一些注意事項。請參閱stackoverflow.com/questions/5958427/...。這些將鍵盤更改回初始狀態。因此,如果用戶切換到其他鍵盤佈局(數字,標點符號等),該狀態將會丟失。我從來沒有找到一個好的解決方案。

相關問題