ゲームが終了したときに、プレーヤーが 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];
}