[英]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.