2012-09-29 100 views
10

我遇到了在SVProgressHUD(基本上是一個帶有全屏透明UIWindow和一些顯示文本和自定義繪製進度條的UIView子視圖的UIView)下輸入文本到UITextField中的麻煩。UITextField沒有得到鍵盤輸入

我的問題是,UITextField顯示閃爍的光標和鍵盤顯示,但是當我點擊一個鍵時,沒有任何內容輸入到文本字段中。 我只看到光標的閃爍中斷就像正常一樣。 有趣的是,後退(刪除)鍵的作用(它真的刪除了UITextView中的最後一個字母),但沒有任何其他鍵。

我正在使用iOS 6.

任何幫助將不勝感激。

編輯: 當沒有顯示SVProgressHUD時,相同的UITextField工作正常。這讓我覺得它與第一響應者有關,但我已經嘗試在SVProgressHUD的每個窗口和子視圖上調用resignFirstResponder,但它仍然不起作用。

回答

34

我終於發現問題: SVProgressHUD在初始化時調用makeKeyAndVisible,因爲它想要接收鍵盤通知以重新定位。我擡起頭,什麼是「重要窗口」實際上是並發現:

...的關鍵窗口響應用戶輸入...

現在,隨着SVProgressHUD的的UIWindow是keyWindow,我的其他窗口,其中包含UITextField沒有得到用戶輸入。

我終於在AppDelegate的窗口上調用makeKeyWindow,並且一切正常。

我希望這可以幫助任何有類似問題的人。

+0

我們可以使用makeKeyWindow和makeKeyAndVisible both.is任何意義或使用 – Anju

+2

我不知道爲什麼這個答案現在沒有幾百upvotes。非常感謝! –

+0

我不知道爲什麼當StackOverflow總是通過時,我再也無法調試類似這樣的問題了。謝謝! –

2

你有沒有實現的方法....

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 

...過濾掉任何不必要的字符?如果是這樣,也許這與過濾有點過分了?

+0

我不使用shouldChangeCharactersInRange(它實際上是一個UITextField對不起,我現在更新了我的問題)的文本字段。 此外,當上面沒有顯示SVProgressHUD時,相同的UITextField可以正常工作。不過謝謝你的回答! –

4

我的解決方案:在顯示SVProgressHUD之前撥打電話resignfirstresponder解除鍵盤鎖定。

0

對我來說這是行得通的。

我改變了我的文本字段委託方法,然後它的工作。爲文本框

  • 確保文本框的用戶交互

    if ([textField isEqual:selectBankName]) 
    { 
        return No; 
    } 
    else if ([textField isEqual:enterAmountTextfield]) 
    { 
        return YES; 
    } 
    
    return NO; 
    } 
    
    1. 組代表是Enabled.And

    2. 最後請檢查您的文本框的委託方法。