2016-01-21 73 views
4

我有一個簡單的視圖,其中有兩個文本視圖以及一個按鈕。所有控件都垂直放置。我可以使用遙控器從一個控件導航到另一個控件。不過,我試圖讓下面的情況下工作:在UITextfield輸入文本後以編程方式更改焦點

  1. 用戶啓動應用程序(重點是第一個文本框)
  2. 用戶輸入文本字段,並使用全屏鍵盤,然後她打「下一步」按鈕
  3. 這個應用程序顯示了第二個文本框(全屏鍵盤),類型的一些文字,點擊‘完成’按鈕
  4. 該應用程序離開全屏鍵盤和聚焦按鈕

而步驟1-3開箱即用,以編程方式更改焦點(4)不起作用。下面是一些代碼:

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if(textField == self.textfieldB) { 
     self.activeView = self.textfieldB; 
     [self setNeedsFocusUpdate]; 
     [self updateFocusIfNeeded]; 
     return YES; 
    } 
    return NO; 
} 

- (UIView *)preferredFocusedView我回無論是存儲在self.activeView(是的,它會返回按鈕實例)。所有方法都按預期調用,但重點不會改變。我在這裏做錯了什麼?

提前致謝!

回答

3

根據this developer forums thread的行爲是故意的:

當解僱所呈現的視圖控制器,就像一個全屏鍵盤,UIKit中會自動返回焦點回到它在哪裏時視圖控制器是第一次提出,如果觀點仍然是可以調整的。這樣焦點會自動返回到用戶預期的位置。目前沒有機制來覆蓋這種行爲。

在類似的情況下,我從鍵盤屏幕返回後,延遲焦點切換。這是一個醜陋的黑客攻擊,我希望UIKit不會對此置評。

+0

我也面臨同樣的問題。感謝你的回答 –

相關問題