簡體   English   中英

skscene UIViewController從SKScene發送短信

[英]skscene UIViewController send SMS from SKScene

我試圖讓玩家在游戲結束時通過短信分享自己的分數。

我已將框架導入到我的項目中。 導入到我的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:'”錯誤。

我嘗試搜索最近幾個小時。 嘗試上帝知道其他帖子/教程有多少種變化和示例(學習一些與此無關的東西很好)。 似乎沒有什么工作。 我開始用盡頭發拉出來。 因此,任何幫助都會很棒。 我相信對於你們中的一些大師來說,這應該是在公園里散步。 謝謝。

編輯:我不使用情節提要,或按鈕/菜單/游戲等的視圖控制器...因此為什么我不能從viewController本身內調用該函數。

編輯:所以我嘗試了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: *

我得到它來打開短信。 小問題,它不允許我取消/取消。

這是我的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];
}

如果引用MFMessageComposeViewController類參考,您將看到需要使用presentModalViewController:animated:模態呈現它。 完成后,您還負責通過委托對象將其關閉。

我建議您看一下Message Composer示例代碼 ,以獲取使用MFMessageComposeViewController類的示例。

UPDATE

您可以只關閉傳遞給您的委托方法的視圖控制器-

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

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

[controller dismissViewControllerAnimated:YES completion:NULL];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM