如何将焦点设置在MFMailComposeViewController的TO字段上?

时间:2011-05-05 15:09:42

标签: objective-c ios

我正在使用标准样板代码来发送带有MFMailComposeViewController的电子邮件,但我找不到关于在TO字段上设置焦点的信息,当控制器显示时可以看到Plus按钮,就像“Mail Link to this”这样的功能一样。 “在Safari中”或“地图中的”共享位置“。

MFMailComposeViewController *mailComposer;              
mailComposer = [[MFMailComposeViewController alloc]init];
mailComposer.mailComposeDelegate = self;
[mailComposer setSubject:@"My Subject"];        
[mailComposer setMessageBody:@"This is the body of my message" isHTML:NO];      
[self presentModalViewController:mailComposer animated:YES];
[mailComposer release];

1 个答案:

答案 0 :(得分:2)

您可以查看mailComposer对象的视图:

UIView *v0 = mailComposer.view;
UIView *v1 = [[v0 subviews] objectAtIndex:0]; // UINavigationTransitionView
UIView *v2 = [[v1 subviews] objectAtIndex:0]; // UIViewControllerWrapperView
UIView *v3 = [[v2 subviews] objectAtIndex:0]; // MFMailComposeView
UIView *v4 = [[v3 subviews] objectAtIndex:0]; // UIView
UIView *v5 = [[v4 subviews] objectAtIndex:0]; // MFComposeScrollView
UIView *v6 = [[v5 subviews] objectAtIndex:0]; // UIView
UIView *v7 = [[v6 subviews] objectAtIndex:0]; // MFMailComposeRecipientView
UIView *v8 = [[v7 subviews] objectAtIndex:1]; // _MFMailRecipientTextField

这个v8家伙就是你想要的人。它是UITextField的子类。让它成为第一个响应者。

正式地说,你应该检查子视图的类型而不是第一个或第二个对象。但话说回来,官方你根本不应该这样做,因为这些都没有记录,并且可能会在未来的iOS版本中破坏。

相关问题