我正在使用Three20,因此我可以创建类似于MFMailComposer的体验,并能够更好地控制邮件和电子邮件的发送方式。我已经看了三个20 TTCatalog MessageController演示应用程序,但它也遇到了我遇到的同样问题。当您从指定的DataSource中选择联系人并在TTCatalog应用程序和我的应用程序中单击“发送”时,“收件人”字段具有值,我不知道如何使用。我在MessageWillSend方法中的应用程序中做了一些日志记录,当我选择一个联系人,不输入主题或正文中的消息时会发生这种情况。
“收件人:(\ n \”< TTTableSubtitleItem:0x618ee30> \“\ n)”,
“主题:”,
“(null)(null)”
主题和正文很好(当我实际输入值时会显示正确的文本),但是如何提取“收件人:”字段中的值?
我正在使用此处描述的数据源:How to use Three20 TTMessageController?所以在这种情况下,To字段应包含所选的手机号码。
我正在使用Xcode 4。
答案 0 :(得分:0)
这可能有潜在危险,但您可以使用TTTessageControllers - (void)发送方法来使用TTTableSubtitleItem.text而不是对象本身来设置收件人。
- (void)send {
NSMutableArray* fields = [[_fields mutableCopy] autorelease];
for (int i = 0; i < fields.count; ++i) {
id field = [fields objectAtIndex:i];
if ([field isKindOfClass:[TTMessageRecipientField class]]) {
TTPickerTextField* textField = [_fieldViews objectAtIndex:i];
//Here is the important part
NSMutableArray *recipients = [[NSMutableArray alloc] init];
for (id textItem in textField.cells) {
[recipients addObject:[textItem text]];
}
[(TTMessageRecipientField*)field setRecipients:recipients];
[recipients release];
} else if ([field isKindOfClass:[TTMessageTextField class]]) {
UITextField* textField = [_fieldViews objectAtIndex:i];
[(TTMessageTextField*)field setText:textField.text];
}
}
TTMessageTextField* bodyField = [[[TTMessageTextField alloc] initWithTitle:nil
required:NO] autorelease];
bodyField.text = _textEditor.text;
[fields addObject:bodyField];
[self showActivityView:YES];
[self messageWillSend:fields];
if ([_delegate respondsToSelector:@selector(composeController:didSendFields:)]) {
[_delegate composeController:self didSendFields:fields];
}
[self messageDidSend];
}