我知道这不正式。我不想将它发布到商店,它只是一个原型。
我试着找到按钮:
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
messageController.messageComposeDelegate = self;
NSArray * allViewControllers = [messageController viewControllers];
for (UIViewController *viewController in allViewControllers)
{
NSArray *allSubviews = [viewController.view subviews];
NSLog(@"class name: %@", viewController.class);
for(UIView *view in allSubviews)
{
if([view isMemberOfClass:[UIButton class]])
{
UIButton *button = (UIButton *)view;
NSLog(@"title: %@", button.titleLabel.text);
}
}
}
但没有任何效果,那么可以更改发送按钮吗?一种黑客攻击?或导入私人标题?
谢谢你。
更新
尝试以下方法:
NSArray *allSubviews = [[messageController toolbar] subviews];
for(UIView *view in allSubviews)
{
if ([view isKindOfClass:[UIToolbar class]])
{
UIToolbar *navigationBar = (UIToolbar *)view;
for(UIView *subview in navigationBar.subviews)
{
NSLog(@"%@", [subview subviews]);
if([subview isMemberOfClass:[UIBarButtonItem class]])
{
UIBarButtonItem *button = (UIBarButtonItem *)view;
NSLog(@"title: %@", button.title);
}
}
}
答案 0 :(得分:2)
在引擎盖后面,是的,你可以欺骗发送按钮的标签。
官方认为不允许,但对于私人使用,您可以使用github上提供的以下框架。 https://github.com/nst/iOS-Runtime-Headers/tree/master/Frameworks/MessageUI.framework
而不是默认框架在您的项目中包含此内容。 并改变你想要的任何东西。
如果有任何查询让我知道,我会显示代码。
答案 1 :(得分:0)
我从来没有这样做,但这里有一些想法可以指出你正确的方向。
MFMailComposeViewController
是UINavigationController
。 “发送”和“取消”按钮实际上在其导航栏中。导航栏是UINavigationController's
视图的子视图,而不是属于其任何子视图。您正在记录每个子视图的子视图,因此您实际上永远不会看到导航栏,因为它是由父级管理的。
尝试记录messageController.view
的子视图,该视图应该为您提供导航栏。另一件事是您正在检查UIButton
,而您可能想要检查UIBarButtonItem
。