objective-c – 如何将焦点设置在MFMailComposeViewController的TO字段上?

我正在使用标准的样板代码来发送带有MFMailComposeViewController的电子邮件,但我找不到关于在TO字段上设置焦点的信息,当控制器显示时可以看到加号按钮,就像它对“本页的邮件链接”这样的功能一样. 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];

最佳答案 您可以查看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版本中破坏.

点赞