4

こんにちは私はadobeAIR用のSMSネイティブ拡張機能を作成しようとしています。以前はObjective-cでコーディングしていましたが、送信またはキャンセルを押したときにSMSウィンドウが閉じないという事実を除いて、すべて正常に機能します。以下はコードのメインセクションですが、さらに情報が必要かどうか私に尋ねてください。読んでくれてありがとう。また、なぜxcodeは2行目に「プロトコルのメソッドが実装されていません」と言っているのですか?

#import "SMSComposerHelper.h"
@implementation SMSComposerHelper

//Event name
static  NSString *event_name = @"SMS_COMPOSER_EVENT";


-(void) sendSMS:(NSString *)toRecipient
         messageBody:(NSString *)messageBody
{

    FREDispatchStatusEventAsync(context, (uint8_t*)[event_name UTF8String], (uint8_t*)[@"WILL_SHOW_MAIL_COMPOSER" UTF8String]);

           MFMessageComposeViewController *smsComposer = [[MFMessageComposeViewController alloc] init];
          smsComposer.messageComposeDelegate = self;

    //make string into array
    NSArray *recipientArray;
    recipientArray = [NSArray arrayWithObjects: toRecipient, nil];

    smsComposer.body = messageBody;   
    smsComposer.recipients = recipientArray;

    //show sms composer
    [[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:smsComposer animated:YES];

}


// Dismisses the sms composition interface when users tap Cancel or Send.
-(void) smsComposeController: (MFMessageComposeViewController*)controller didFinishWithResult: (MessageComposeResult)result error:(NSError*)error
{
    NSString *event_info = @"";
          // Notifies users about errors associated with the interface
          switch (result)
          {
                    case MessageComposeResultCancelled:
            event_info = @"SMS_CANCELED";
                              break;
        case MessageComposeResultSent:
            event_info = @"SMS_SENT";
                              break;
                    case MessageComposeResultFailed:
            event_info = @"SMS_FAILED";
                              break;
                    default:
            event_info = @"SMS_UNKNOWN";
            break;
          }

    FREDispatchStatusEventAsync(context, (uint8_t*)[event_name UTF8String], (uint8_t*)[event_info UTF8String]);
    FREDispatchStatusEventAsync(context, (uint8_t*)[event_name UTF8String], (uint8_t*)[@"WILL_HIDE_SMS_COMPOSER" UTF8String]);

    context = nil;


    //hide mail composer
   [[[[UIApplication sharedApplication] keyWindow] rootViewController] dismissModalViewControllerAnimated:YES];
}

-(void)setContext:(FREContext)ctx {
    context = ctx;
}

@end

応答 :

オマールはあなたの答えととても速く答えてくれて本当にありがとう!最初に私はあなたの解決策を使ってみました

[controller dismissModalViewControllerAnimated:YES];

しかし、これは何もしなかったので、私はそれを元に戻しました。私のヘッダーはすでに:

@interface SMSComposerHelper : NSObject<MFMessageComposeViewControllerDelegate> {

そこで、警告の修正に集中することにしました。警告は変更することで解決されました:

-(void) smsComposeController: (MFMessageComposeViewController*)controller didFinishWithResult: (MessageComposeResult)result error:(NSError*)error

に:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result

なぜこれがうまくいったのか知りたいですか?オマールを知っていますか?それで私は警告を解決しましたが、それでも却下されませんでした。だから私はあなたの提案をもう一度試しました:

[controller dismissModalViewControllerAnimated:YES];

そしてそれはうまくいった!!!! どうもありがとう。あなたは私が何時間立ち往生していたかわかりません。私はあなたの答えを喜んで受け入れます。

4

1 に答える 1

6

それ以外の

 [[[[UIApplication sharedApplication] keyWindow] rootViewController] dismissModalViewControllerAnimated:YES];

書きます

 [controller dismissModalViewControllerAnimated:YES];

警告にも

に移動し、以下をSMSComposerHelper.h 追加します

@interface SMSComposerHelper : UIViewController<MFMessageComposeViewControllerDelegate>{

それ以外の

@interface SMSComposerHelper : UIViewController{
于 2012-06-02T12:16:36.513 に答える