我有一個自定義類的多個實例需要從鍵盤輸入。你可以想到UITextField
(但它們不是UITextField
,它們是NSObject
)。但是,他們都有一個屬性UIControl *control
。識別標籤按鈕被按下以移動到下一個響應者
這些對象被實例化並放入一個數組(訂單問題),並按照相同的順序放在屏幕上。
場景1:第一個對象的用戶標籤,它成爲第一個響應者。用戶點擊另一個對象(來自同一個班級),併成爲第一響應者。沒問題。
場景2:第一個對象的用戶標籤,它成爲第一個響應者。用戶點擊鍵盤上的TAB
按鈕(iPad或iPhone或無線鍵盤),我希望陣列中的下一個對象成爲下一個響應者。 iOS隨機挑選[?或者某些邏輯不清楚]另一個與我想要的順序不同的對象。
問題:因爲這些對象是NSObject
s,我如何攔截轉換到下一個對象。我嘗試使用標籤或跟蹤誰是第一響應者,但問題是,如果用戶不按順序敲擊對象,那很好 - 我不想攔截它。我只想攔截從一個對象到另一個對象的轉換只有在它是通過點擊鍵盤上的TAB
(或Next
或Return
)按鈕。
有什麼想法?謝謝。
爲什麼不把你的自定義類的屬性,它指向下一個對象它應該去(用一個弱引用),然後只是按下tab/return時將該對象作爲第一個響應者,如果沒有對象(如最後一個)沒有任何事情會發生,因爲它將發送到零的消息。我想你甚至可以使用界面生成器來設置這個自定義屬性。 (然後,我可能不會理解你的問題) – Pochi
@LuisOscar謝謝。這是一個我沒有想到的選項,但仍然存在障礙:1)我最大的問題是當鍵盤上的TAB按鈕被按下時,我什麼也沒有得到。我怎麼弄到的? iOS路由輸入到其他地方,而不是我的對象。 2)我寧願這些東西也不瞭解彼此 - 即使參考資料太少。儘管如果我發現這是唯一的選擇,我可以忽略這一點。 – Canopus
您是否在使用界面構建器?你說他們不是uitextfield,但他們必須是,或者你必須有一個uitextfield在某處顯示鍵盤(也許是他們的一個子類)你指定他們是什麼? (像你的自定義子類可能有一個uitextfield,那麼這個是成爲第一響應者)關於返回,虐待粘貼代碼作爲答案因爲它看起來很有趣這裏 – Pochi