2012-01-24 36 views
5

Tôi đang sử dụng MFMailcomposerViewController trong Ứng dụng của mình. Mọi thứ đều hoạt động tốt, ngoại trừ việc tôi cần có Không. của người nhận và danh sách người nhận mà người dùng đang gửi đến. Bất kỳ trợ giúp hoặc giải pháp nào về vấn đề này ..Lấy danh sách Người nhận trong MFMailComposeViewController

+0

bạn có thể nhận số người nhận nhưng không có số người nhận .. – hemant

+0

@hemant Bạn có thể cho tôi đề xuất về cách nhận số không. của người nhận, tôi cũng chỉ cần điều đó mà thôi. Cảm ơn trước! –

Trả lời

0

Cuối cùng Tôi đã nhận được câu trả lời và muốn chia sẻ nó ... Tôi đã nhận được sự trợ giúp lớn từ [blog]: http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html

for (int x=0; x<[emailArray count]-1; x++) { 
NSLog(@"%d). %@",x+1,[emailArray objectAtIndex:x]); 
NSString *element = [emailArray objectAtIndex:x]; 
NSArray *arr = [element componentsSeparatedByString:@" & "]; 
if ([arr count]==1) { 
    ++emailCount; 
} 
else{ 
    int more = [[[arr objectAtIndex:1] substringToIndex:1] intValue]; 
    emailCount+=(more+1); 
} 
} 
- (NSString *)findEmailAddresses:(UIView *)view depth:(NSInteger)count 
{ 
NSString *eAddress = nil; 
if (!view) 
    return eAddress; 
NSMutableString *tabString = [NSMutableString stringWithCapacity:count]; 
for (int i = 0; i < count; i++) 
    [tabString appendString:@"-- "]; 
NSLog(@"%@%@", tabString, view); 
if ([view isKindOfClass:[UITextField class]]) 
{ 
    // MAGIC: debugger shows email address(es) in first textField 
    // but only if it's about max 35 characters 
    if (((UITextField *)view).text) 
    { 
     eAddress = [NSString stringWithString:((UITextField *)view).text]; 
     NSLog(@"FOUND UITextField: %@", eAddress ? eAddress : @""); 
     [emailArray addObject:eAddress]; 
    } 
} 
NSArray *subviews = [view subviews]; 
if (subviews) { 
    for (UIView *view in subviews) 
    { 
     NSString *s = [self findEmailAddresses:view depth:count+1]; 
     if (s) eAddress = s; 
    } 
} 
return eAddress; 
} 
2

Tôi không có cách nào tiêu chuẩn để thực hiện việc này, phương thức ủy quyền mailComposeController:didFinishWithResult:error: cung cấp cho bạn tham chiếu đến trình điều khiển chế độ xem nhà soạn nhạc sau khi nó bị loại bỏ, nhưng không có người truy cập MFMailComposeViewController mà bạn có thể sử dụng để có được những nhận đếm

một workaround sẽ được kiểm tra subviews của bộ điều khiển xem, tìm trường văn bản được sử dụng để giữ những người nhận và nhận được văn bản: xem here

+0

nhưng tôi nhận được rằng 'aaa.aa @ aa.com và 3 nhiều hơn' như chuỗi, trong trường hợp đó tôi không thể kiểm tra id email là chính xác hay không, tôi đang cần fro giống nhau .... –

+0

như ông nói trong blog đó, tôi nghĩ bạn chỉ có thể sử dụng điều này để nhận được số lượng người nhận, nếu vượt quá giới hạn 25 ký tự đó thì tôi không biết cách nào để nói tất cả những gì họ – wattson12

0

Không có cách nào để làm điều này như iOS 6 dưới dạng thành phần thư bây giờ được thực hiện thông qua một cuộc gọi dịch vụ XPC đến một quá trình từ xa (MailCompositionService). Có một lời giải thích tuyệt vời ở đây: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/. Mức thấp nhất trong phân cấp khung nhìn bây giờ là một _UIRemoteView mà giao diện cho quá trình từ xa. Mã từ bài đăng trên blog tại số http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html giờ đây sẽ trở lại số không.

Các vấn đề liên quan