首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIActivityViewController崩溃

UIActivityViewController崩溃
EN

Stack Overflow用户
提问于 2013-11-16 04:54:38
回答 2查看 905关注 0票数 0

当我使用prensentViewController方法时,我不知道为什么uiactivityviewcontroller会崩溃。

很奇怪,有人有线索吗?

当我使用program控制器时,程序运行良好,而不是不间断。

代码语言:javascript
复制
#import "ActivityViewController.h"

@interface ActivityViewController ()

@end

@implementation ActivityViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    [self createTextField];
    [self createButton];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void) createTextField
{
    self.myTextField = [[UITextField alloc] initWithFrame:CGRectMake(20.0f, 35.0f, 280.0f, 30.0f)];
    self.myTextField.translatesAutoresizingMaskIntoConstraints = NO;
    self.myTextField.borderStyle = UITextBorderStyleRoundedRect;
    self.myTextField.placeholder =@"Enter text to Share";
    self.myTextField.delegate = self;
    [self.view addSubview:self.myTextField];
}

- (void) createButton
{
    self.myButtonShare = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    self.myButtonShare.frame = CGRectMake(20.0f, 80.0f, 280.0f, 40.0f);
    self.myButtonShare.translatesAutoresizingMaskIntoConstraints = NO;


    [self.myButtonShare setTitle:@"Share" forState:UIControlStateNormal];
    [self.myButtonShare addTarget:self action:@selector(handleShare:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:self.myButtonShare];



}

- (void) handleShare:(id)sender
{

    NSArray *activities = @[UIActivityTypeMail,UIActivityTypeMessage];

    self.myActivityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self.myTextField.text] applicationActivities:activities];

    [self presentViewController:self.myActivityViewController animated:YES completion:nil];

}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [self.myButtonShare resignFirstResponder];
    return YES;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-18 21:51:30

UIActivityViewController的initWithActivityItems:应用活动:文档指出,作为第二个参数(applicationActivities)传递的NSArray应该是“UIActivity数组”。您正在传递一个数组,其中包含两个对象UIActivityTypeMail和UIActivityTypeMessage,它们的类型为NSString *const。您似乎希望可以将共享表限制为只显示邮件和消息活动,这是目前不可能的。

若要阻止崩溃的发生,请将代码更改为:

代码语言:javascript
复制
<...>
self.myActivityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self.myTextField.text] applicationActivities:nil];
<...>
票数 0
EN

Stack Overflow用户

发布于 2014-03-07 05:53:52

ccjensen所说的都是正确的,但实际上可以通过排除活动将您的股票单限制在邮件和消息上,例如:

代码语言:javascript
复制
activityController.excludedActivityTypes = @[ UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList ];

这将只显示默认的电子邮件共享。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20014856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档