Ändern der Aktion, die an die Sende-Schaltfläche in MFMessageComposeViewController gebunden ist - ios, objective-c, cocoa-touch, ios7

Ich weiß, dass das offiziell nicht möglich ist. Ich möchte es nicht in den Laden bringen, es ist nur ein Prototyp.

Ich habe versucht, den Knopf zu finden:

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

Aber nichts hat funktioniert, also ist es möglich, den Sende-Button zu ändern? Eine Art von Hack? oder einen privaten Header importieren?

Danke.

Aktualisieren:

Folgendes versucht:

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

}

Antworten:

2 für die Antwort № 1

Hinter der Haube kann man ja das Label von Send Button austricksen.

Offiziell ist es nicht erlaubt, aber für den privaten Gebrauch können Sie folgenden Rahmen verwenden, der auf github verfügbar ist. https://github.com/nst/iOS-Runtime-Headers/tree/master/Frameworks/MessageUI.framework.

Anstelle des Standard-Framework fügen Sie dies in Ihr Projekt ein. Und ändere, was du willst.

Wenn irgendeine Frage mich informiert, werde ich den Code zeigen.


0 für die Antwort № 2

Ich habe das noch nie gemacht, aber hier sind einige Ideen, die Sie in die richtige Richtung weisen.

MFMailComposeViewController ist ein UINavigationController. Die Schaltflächen "Senden" und "Abbrechen" befinden sich in der Navigationsleiste. Die Navigationsleiste ist eine Unteransicht der UINavigationController"s Ansicht, anstatt zu irgendeinem seiner Kinder zu gehören. Sie protokollieren die Untersichten jeder untergeordneten Ansicht, sodass Sie die Navigationsleiste nie sehen werden, da sie von der übergeordneten Ansicht verwaltet wird.

Versuchen Sie, die Unteransichten der messageController.view, das sollte dir die Navigationsleiste geben. Die andere Sache ist, dass Sie suchen UIButton während Sie vielleicht nach einem prüfen möchten UIBarButtonItem.


Speisekarte