gpt4 book ai didi

ios - skscene UIViewController 从 SKScene 发送短信

转载 作者:行者123 更新时间:2023-11-29 10:45:28 27 4
gpt4 key购买 nike

我试图让玩家在游戏结束时通过短信分享他们的分数。

我已将框架导入到我的项目中。在我的 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:'”错误。

过去几个小时我一直在努力搜索。试试天知道其他帖子/教程中有多少变体和示例(这很好地学习了一些与此无关的东西)。似乎没有什么工作。我开始用完头发拔掉。所以任何帮助都会很棒。我相信对于你们中的一些大师来说,这应该是在公园里散步。谢谢。

编辑:我没有使用 Storyboard,也没有使用按钮/菜单/游戏等的 View Controller ......因此我无法从 viewController 本身调用该函数。

编辑:所以我尝试了 Paulw11 在他的链接中建议的内容。现在我有以下错误。

在我的 View Controller 中

    MyScene.MyViewController = self;

我收到“在‘MyScene’类型的对象上找不到属性‘MyViewController’”错误

也在 MyScene.m 中

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

[_MyViewController 发送短信];我得到一条“'MyViewController' 的不可见@interface 声明选择器'SendSMS'”

编辑 2: *编辑 2:* 编辑 2: *编辑 2:*

我得到它来打开短信。小问题,不允许我将其关闭/取消。

这是我的发送短信代码:

 -(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 Class Reference您将看到您需要使用 presentModalViewController:animated: 以模态方式呈现它。您也有责任通过您的 delegate 将其关闭。完成后反对。

我建议你看看 Message Composer sample code有关使用 MFMessageComposeViewController 类的示例。

更新

您可以关闭传递给委托(delegate)方法的 View Controller -

- (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];
}

关于ios - skscene UIViewController 从 SKScene 发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com