2011-05-05 89 views
4

我正在使用標準樣板代碼來發送帶有MFMailComposeViewController的電子郵件,但是我無法找到有關在TO字段上設置焦點的信息,而在控制器顯示時可以看到加號按鈕,因爲它對像「郵件鏈接到此頁面「在Safari中或在地圖中的」共享位置「。如何將焦點設置在MFMailComposeViewController的TO字段上?

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]; 
+0

關於這個問題的任何消息? – fabb 2011-12-08 13:22:07

回答

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版本中打破。

+0

在iOS 7中破解了嗎? – alltom 2013-10-06 21:34:26

相關問題