2012-01-02 15 views
4

私は主に夜間に使用される普遍的なアプリを書いています。私はキーボードを表示する必要がありますが、キーボードの明るい色がユーザーの目をくらませたり、夜間視力を傷つけたりしないようにしてください。私はカスタムキーボードを作成する手間を掛けたくないので、キーボード上にUIViewを配置し、0.5のアルファを持つ黒の背景色を与えるという解決策があると思っていましたが、キーボードを覆うように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

+0

しかし、iPadでキーボードを分割すると正しく動作しません。私は2つのUIViewを作成する必要があると思う - キーボードの各半分の1つ... – Vic320

+0

良いスポット - 私はiPadでこれをやっていないので、私はそれに気付かなかった。導入されているスプリットキーボードのようなものは、これを達成する壊れやすい方法です。 – jrturton

0

UITextFiled/UITextArea(使用されているもの)のinputViewプロパティで必要な変更を適用してみてください。

+0

ありがとうございますが、動作しません。 – Vic320

関連する問題