【问题标题】:UIActivityViewController CrashUIActivityViewController 崩溃
【发布时间】:2013-11-16 04:54:38
【问题描述】:

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

这很奇怪,有人知道吗?

当我使用 presenviewcontroller 时,程序运行良好。

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

【问题讨论】:

  • "crash" 对诊断问题没有多大帮助。您可能需要提供更多详细信息...
  • 您遇到了什么具体错误。

标签: uiactivityviewcontroller


【解决方案1】:

ccjensen 所说的都是正确的,除了您实际上可以通过排除活动将您的共享表限制为邮件和消息,例如:

activityController.excludedActivityTypes = @[ UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList ];

默认情况下这只会显示电子邮件共享。

【讨论】:

    【解决方案2】:

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

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

    <...>
    self.myActivityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self.myTextField.text] applicationActivities:nil];
    <...>
    

    【讨论】:

      猜你喜欢
      • 2014-10-27
      • 1970-01-01
      • 2015-06-16
      • 2015-06-15
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      相关资源
      最近更新 更多