1

MFMessageComposeViewController半透明のキーボードでを開始しようとしています。できるだけ透明にしたいのですが、私が行った読み取りから、それを行うことは許可されていないと思います.

UIKeyboardを作成するときにのプロパティをどのように設定しますMFMessageComposeViewControllerか?

どうもありがとう!

4

2 に答える 2

4

そうしない。ドキュメントから:

重要メッセージ作成インターフェース自体はカスタマイズできないため、アプリケーションで変更しないでください。さらに、インターフェイスを表示した後、アプリケーションは SMS コンテンツにそれ以上の変更を加えることができません。ユーザーはインターフェイスを使用してコンテンツを編集できますが、プログラムによる変更は無視されます。したがって、必要に応じて、インターフェイスを表示する前にコンテンツ フィールドの値を設定する必要があります。

UIKeyboard は非公開であり、このビューのテキスト フィールドにはアクセスできないため、このインターフェイスを変更することは想定されていません。ビュー階層を介してこのテキスト フィールドにアクセスして変更しようとすると、アプリ ストアでアプリが拒否される可能性があります。

于 2012-10-03T22:08:41.003 に答える
1

テキスト フィールドまたはテキスト ビューの keyboardAppearance プロパティを に設定するUIKeyboardAppearanceAlertと、キーボードが透明キーボードに変更されます。

パブリック API で使用できるスタイルは 2 つだけだと聞きました。

[textView setKeyboardAppearance:UIKeyboardAppearanceAlert];
[textView setKeyboardAppearance:UIKeyboardAppearanceDefault];

ただし、プライベート API メソッドを使用して、キーボードの実装を取得できます。

id keyboardImpl = [objc_getClass("UIKeyboardImpl") sharedInstance];

不透明度を下げ、

[keyboardImpl setAlpha:0.8f];

染めて、

UIView *tint = [[UIView alloc] initWithFrame:[keyboardImpl frame]];
[tint setBackgroundColor:[UIColor colorWithRed:0.0f green:0.0f blue:1.0f alpha:0.3f]];
[tint setUserInteractionEnabled:NO];
[[keyboardImpl superview] insertSubview:tint aboveSubview:keyboardImpl];
[tint release];

またはそれを裏返します:

[[keyboardImpl window] setTransform:CGAffineTransformMakeScale(-1.0f, 1.0f)];

それがあなたの問題の解決策であることを願っています。

于 2012-10-03T22:06:36.540 に答える