更改绑定到MFMessageComposeViewController中的发送按钮的操作

时间:2014-05-27 18:43:36

标签: ios objective-c cocoa-touch ios7

我知道这不正式。我不想将它发布到商店,它只是一个原型。

我试着找到按钮:

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);
            }
        }

    }

2 个答案:

答案 0 :(得分:2)

在引擎盖后面,是的,你可以欺骗发送按钮的标签。

官方认为不允许,但对于私人使用,您可以使用github上提供的以下框架。 https://github.com/nst/iOS-Runtime-Headers/tree/master/Frameworks/MessageUI.framework

而不是默认框架在您的项目中包含此内容。 并改变你想要的任何东西。

如果有任何查询让我知道,我会显示代码。

答案 1 :(得分:0)

我从来没有这样做,但这里有一些想法可以指出你正确的方向。

MFMailComposeViewControllerUINavigationController。 “发送”和“取消”按钮实际上在其导航栏中。导航栏是UINavigationController's视图的子视图,而不是属于其任何子视图。您正在记录每个子视图的子视图,因此您实际上永远不会看到导航栏,因为它是由父级管理的。

尝试记录messageController.view的子视图,该视图应该为您提供导航栏。另一件事是您正在检查UIButton,而您可能想要检查UIBarButtonItem