2012-01-02 69 views
4

我在寫一個通用的應用程序,主要用於晚上。我將需要顯示一個鍵盤,但不希望鍵盤的淺色盲視用戶和/或破壞他們的夜視。我不想經歷麻煩來創建自定義鍵盤,所以我認爲解決方案可能是將UIView放在鍵盤上,並給它一個0.5的alpha值的黑色背景色,但是我無法確定瞭解如何獲得UIView來覆蓋鍵盤。有誰知道如何做到這一點?蘋果是否允許這樣做?iPhone/iPad鍵盤調光

回答

6

鍵盤被找到作爲新窗口的子視圖,當它出現時被添加。發現它有點冒險和脆弱(需要在新的iOS版本中進行檢查,因爲它之前已經改變),但它確實有效並且允許(我正好在應用程序商店中的應用程序中進行夜間模式) 。

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; // This assumes you aren't adding any new windows yourself 

for(UIView *keyboard in tempWindow.subviews) 
{ 
    if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) // This was different in an earlier version of iOS, and may well change again in the future! 
    { 
     [keyboard addSubview:maskView]; 
     break; 
    } 
} 

這是在響應UIKeyboardDidShowNotification對象的方法內完成的。我沒有在iPad上試過,這只是iPhone代碼。

正如你所說,遮罩視圖只是一個帶有黑色背景和一些透明度的普通視圖。您還可以使用提供按鍵之間的黑色空間的提示鍵盤樣式。

不幸的是,這種方法並不能防止小鍵閃爍(當你點擊一個鍵時彈出的較大鍵)處於全亮狀態。

+0

我可以證實,這也適用於iPad!謝謝! – Vic320 2012-01-02 21:27:24

+0

但我注意到,當你在iPad上分割鍵盤時,這不能正常工作。我懷疑我需要創建2個UIView--每個鍵盤的一半... – Vic320 2012-01-07 06:32:45

+0

好點 - 正如我所說我沒有在iPad上這樣做,所以我沒有注意到這一點。像引入分離鍵盤這樣的東西正是爲什麼這是實現這一點的脆弱方式。 – jrturton 2012-01-07 08:50:28

0

嘗試在UITextFiled/UITextArea(正在使用的)的inputView屬性上應用所需的更改。

+0

謝謝,但沒有,這是行不通的...... – Vic320 2012-01-02 18:43:43