MFMessageComposeViewController में भेजें बटन पर बाध्य कार्रवाई को बदलना - आईओएस, उद्देश्य-सी, कोको-टच, 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 № 1

हुड के पीछे, हाँ आप भेजें बटन के लेबल को ट्रिक कर सकते हैं।

आधिकारिक तौर पर इसकी अनुमति नहीं है, लेकिन निजी उपयोग के लिए आप निम्नलिखित ढांचे का उपयोग कर सकते हैं जो कि जिथब पर उपलब्ध है। https://github.com/nst/iOS-Runtime-Headers/tree/master/Frameworks/MessageUI.framework

डिफ़ॉल्ट ढांचे के बजाय इसे अपनी परियोजना में शामिल करें। और जो कुछ भी आप चाहते हैं उसे बदलें।

अगर कोई पूछताछ मुझे बताती है कि मैं कोड दिखाऊंगा।


जवाब के लिए 0 № 2

मैंने कभी ऐसा नहीं किया है लेकिन यहां कुछ विचार हैं जो आपको सही दिशा में इंगित करने के लिए हैं।

MFMailComposeViewController एक है UINavigationController। "भेजें" और "रद्द करें" बटन वास्तव में इसके नेविगेशन बार में हैं। नेविगेशन बार का एक सबव्यूव है UINavigationController"s देखें, इसके किसी भी बच्चे से संबंधित है। आप प्रत्येक बच्चे के दृश्य के सबव्यूज़ लॉगिंग कर रहे हैं, इसलिए आप वास्तव में नेविगेशन बार कभी नहीं देख पाएंगे क्योंकि यह माता-पिता द्वारा प्रबंधित किया जाता है।

के सबव्यूज़ लॉगिंग करने का प्रयास करें messageController.view, जो आपको नेविगेशन बार देना चाहिए। दूसरी बात यह है कि आप की जांच कर रहे हैं UIButton जबकि आप एक के लिए जांच कर सकते हैं UIBarButtonItem


संबंधित सवाल
सबसे लोकप्रिय