1

我正在尝试MFMessageComposeViewController使用半透明键盘启动 a。我想让它尽可能透明,但我认为我们不能从我所做的阅读中做到这一点。

UIKeyboard创建 时如何设置 的属性MFMessageComposeViewController

非常感谢!

4

2 回答 2

4

你不。从文档中:

重要消息组合接口本身不可定制,并且不能由您的应用程序修改。此外,在呈现界面后,您的应用程序无法对 SMS 内容进行进一步的更改。用户可以使用界面编辑内容,但程序更改会被忽略。因此,如果需要,您必须在呈现界面之前设置内容字段的值。

您不应该更改此界面,因为 UIKeyboard 是私有的,并且您无法访问此视图上的文本字段。尝试通过视图层次结构访问和修改此文本字段可能会导致您的应用在应用商店中被拒绝。

于 2012-10-03T22:08:41.003 回答
1

将文本字段或文本视图的 keyboardAppearance 属性设置为UIKeyboardAppearanceAlert会将键盘更改为透明键盘。

我听说公共 API 中只有两种样式可用:

[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 回答