如何使用 UIMessage 框架创建用于处理电子邮件的自定义对象
Posted
技术标签:
【中文标题】如何使用 UIMessage 框架创建用于处理电子邮件的自定义对象【英文标题】:How to create a custom object for handling emailing using UIMessage framework 【发布时间】:2013-12-19 20:22:32 【问题描述】:我创建了 NSObject 的子类,目的是在其他类中使用此类的实例来执行 pdf 文件的创建,然后附加并通过电子邮件发送该文件。这应该避免在整个应用程序中复制繁重的 pdf 创建和电子邮件代码。这是h文件:
#import <Foundation/Foundation.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface PBVemailWithAttachment : NSObject <MFMailComposeViewControllerDelegate>
//call to create a new PDF file using UIGraphicsBeginPDFContextToFile with the specifeid width and
height
- (void)setupPDFDocumentNamed:(NSString*)name Width:(float)width Height:(float)height;
//call to start a new page in an existing PDF document wit the size provided in pageRect.
- (void)beginPDFPageWithRect: (CGRect)pageRect;
//call to add text to the current pdf page given a specific font and font size and drawn a the given
frame. returns the frame in whcih the text is drawn in order to allow subsequent calls to position
additional elements on the page correctly relvant to the previously added text.
- (CGRect)addText:(NSString*)text withFont:(NSString*)font withFrame:(CGRect)frame fontSize:
(float)fontSize;
//call to draw a line on the page with the given frame and in the given color. Returns the frame of the
drawn line for positioning subsequent objects on the page.
- (CGRect)addLineWithFrame:(CGRect)frame withColor:(UIColor*)color;
//call to place an image on the page at a specific point. A CGRect will be created for the image frame
using the CGpoint and the width and height of the provided image. Returns the frame Rect of the image
to popsition subsequent objects on the page.
- (CGRect)addImage:(UIImage*)image atPoint:(CGPoint)point;
//closes the UIGraphics content being used to generate the PDF file
- (void)finishPDF;
-(void)emailFileNameAsAttachment:(NSString *)filename withSubject: (NSString *)subject withMessageBody:
(NSString *)messageBody withMIMEType: (NSString *)mimeType AttachmentNamed:(NSString *)attachmentName;
@end
问题出在 .m 文件中,我在实现委托方法时遇到错误,说dismissViewControlelrAnimated 不是明显声明的选择器。现在我意识到这是因为我将 NSObject 子类化了。所以我有几个关于如何完成这项工作的问题:
-
我应该继承 UIViewConotrller 还是 NSObject?
可能更重要的是,这可能会回答 1,我在哪里实现 MFMailCompose 委托,在自定义对象上或在将调用此对象的实例并调用其方法来完成创建的“繁重工作”的类中PDF并附上ti并通过电子邮件发送出去?
-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:( MFMailComposeResult )结果错误:(NSError*)error
[selfdismissViewControllerAnimated:YES 完成:nil];
【问题讨论】:
【参考方案1】:为了解决这个问题,我最终创建了一个自定义对象来处理 pdf 创建,但直接在类中调用电子邮件处理程序方法。如果有人有答案,我仍然对此有一个普遍的问题:如果自定义对象将实现委托方法,是否可以创建自定义对象来处理“繁重的重复任务”?我仍然不清楚模式。
【讨论】:
以上是关于如何使用 UIMessage 框架创建用于处理电子邮件的自定义对象的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Blazor 框架在前端浏览器中导入和导出 Excel
在 Zend Framework 2 中使用 Zend_Mail + Zend_Mime 创建 HTML 电子邮件