1

ゲームが終了したときに、プレーヤーが SMS でスコアを共有できるようにしようとしています。

フレームワークをプロジェクトにインポートしました。my viewController.h ファイルにインポートされました。

ここに私のviewController.hファイルがあります

#import <UIKit/UIKit.h>
#import <SpriteKit/SpriteKit.h>
#import <MessageUI/MessageUI.h>


@interface myViewController : UIViewController <MFMessageComposeViewControllerDelegate> {
}

@end

また、次のように MyScene.h にインポートしようとしました。

#import <MessageUI/MessageUI.h>

@interface MyScene : SKScene <MFMessageComposeViewControllerDelegate> {

}

SMS 共有を表示したいときは、MyScene.m ファイルでこのコードを使用します

MFMessageComposeViewController *textComposer = [[MFMessageComposeViewController alloc] init];
[textComposer setMessageComposeDelegate:self];

if ([MFMessageComposeViewController canSendText]) {
    [textComposer setRecipients:[NSArray arrayWithObject:nil]];
    [textComposer setBody:@"Happy Happy Joy Joy!"];
    [self presentViewController:textComposer animated:YES completion:NULL];

} else {
    NSLog(@"Cant send text!");
}

しかし、この行では

[self presentViewController:textComposer animated:YES completion:NULL];

「'MyScene' の目に見える @interface がセレクター 'presentViewController:animated:completion:' を宣言していません」というエラーが表示されます。

過去数時間の検索を試みました。神が他の投稿/チュートリアルからのバリエーションと例をいくつ知っているかを試してみてください(これは、これとは関係のないいくつかのことを学ぶのに適していました). 何もうまくいかないようです。抜こうとする髪がなくなり始めた。だから、どんな助けも素晴らしいでしょう。ここにいるグルの何人かにとって、これは公園を散歩するべきだと確信しています。ありがとう。

編集:ストーリーボード、またはボタン/メニュー/ゲームプレイなどのビューコントローラーを使用していないため、ビューコントローラー自体から関数を呼び出すことができないのはなぜですか。

編集: だから私は Paulw11 が彼のリンクで提案したことを試しました。今、私は次のエラーがあります。

myViewControllerで

    MyScene.MyViewController = self;

「タイプ 'MyScene' のオブジェクトにプロパティ 'MyViewController' が見つかりません」というエラーが表示される

MyScene.m にもあります

- (void)sendToController
{
     NSLog(@"ok");
    // use the already-created spriteViewController
    [_MyViewController sendSMS];
}

[_MyViewController sendSMS]; 「'MyViewController' の可視 @interface がセレクター 'SendSMS' を宣言していません」という行が表示されます。

編集 2: *編集 2: *編集 2: *編集 2: *

SMSを開くためにそれを手に入れました。小さな問題ですが、それを却下/キャンセルすることはできません。

ここに私のsendSMSコードがあります:

 -(void) sendSMS {

MFMessageComposeViewController *textComposer = [[MFMessageComposeViewController alloc] init];
[textComposer setMessageComposeDelegate:self];

if ([MFMessageComposeViewController canSendText]) {
    [textComposer setRecipients:[NSArray arrayWithObject:@" "]];

    NSString *body = [NSString stringWithFormat:@"Happy Day!: %i.   ", _score];
    [textComposer setBody:body];

    UIViewController *vc = self.view.window.rootViewController;
    [vc presentViewController: textComposer animated: YES completion:nil];

} else {
    NSLog(@"Cant send text!");
}
}

これが私の却下コードです:

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

    UIViewController *vc = self.view.window.rootViewController;
    [vc dismissViewControllerAnimated:YES completion:NULL];

}

編集3

次のコードは、正しい時間に NSLog を表示しますが、ウィンドウを閉じません。

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
             didFinishWithResult:(MessageComposeResult)result
{
    UIViewController *vc = self.view.window.rootViewController;

// Notifies users about errors associated with the interface
switch (result)
{
    case MessageComposeResultCancelled:
       NSLog(@"Result: SMS sending canceled");
        break;
    case MessageComposeResultSent:
        NSLog(@"Result: SMS sent");
        break;
    case MessageComposeResultFailed:
        NSLog(@"Result: SMS sending failed");
        break;
    default:
        NSLog(@"Result: SMS not sent");
        break;
}

[vc dismissViewControllerAnimated:YES completion:NULL];
}
4

1 に答える 1