2017-04-11 20 views
0

我們有一個特定的程序,其中用戶在數字鍵盤上鍵入數字,但在其accessible view上也有按鈕。所以如果他在視圖上鍵入一個特定的按鈕,我想保持鍵盤打開,但禁用它,而可訪問的視圖仍然可以打開和工作。數字鍵盤保持打開狀態但禁用所有按鈕?

因此,例如,如果他在視圖上鍵入「A」,我想在其仍然打開時禁用數字鍵盤,直到他鍵入「C」並且它將被再次啓用。

我無法找到禁用它並將其保持打開的方法。

+3

當您不想接受來自鍵盤的輸入時,您可以實現文本字段的委託方法'shouldChangeCharactersInRange:replacementString:'並返回'false'。鍵盤將保持可點擊,但輸入將不會根據您的邏輯傳播。 – Losiowaty

+0

非常感謝,我知道這個技巧,我想創造一個美麗的用戶體驗,當沒有錯誤的空間。如果我別無選擇,我會去做的。 – Curnelious

+2

唯一的另一種方法是創建您自己的自定義鍵盤並對其進行編程以實現您的結果。例如,當您鍵入字母「A」時,您可以使其自定義鍵盤上的數字鍵被禁用,直到輸入字母「C」。請記住,這很容易禁用和啓用,因爲鍵是鍵盤上的按鈕。 –

回答

0

正如Losiowaty在評論中指出的那樣,您應該實施UITextViewDelegate的委託方法,稱爲shouldChangeTextIn:replacementText:並返回false。這樣,鍵盤就可以識別出按鍵,但按鍵在技術上會被禁用。

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 
    //other actions before returning, for e. g. informing the user that the keyboard is disabled 

    return false 
}