Давайте посмотрим на лес сначала, прежде чем смотреть на деревья.
Здесь есть много информативных ответов с большими подробностями, я не буду повторять ни одного из них. Ключ к программированию в JavaScript имеет сначала правильную ментальную модель общего исполнения.
Хорошие новости заключается в том, что, если вы хорошо понимаете этот момент, вам никогда не придется беспокоиться о гоночных условиях. Прежде всего вы должны понимать, как вы хотите упорядочить свой код как по существу ответ на разные дискретные события, и как вы хотите объединить их в логическую последовательность. Вы можете использовать обещания или новые асинхронные / ожидающие более высокие уровни в качестве инструментов для этой цели, или вы можете откатывать свои собственные.
Но вы не должны использовать какие-либо тактические инструменты для решения проблемы, пока вам не понравится актуальная проблемная область. Нарисуйте карту этих зависимостей, чтобы знать, что нужно запускать, когда. Попытка ad-hoc подхода ко всем этим обратным вызовам просто не поможет вам.
Похоже, что недавнее обновление приложения Facebook заменило встроенную активность Facebook на то, что игнорирует текст статуса. Если вы удалите приложение Facebook с вашего устройства, текст будет отображаться с использованием кода, который у вас есть. Если у вас установлено приложение Facebook, вы получаете изображения, URL-адреса, но не текст
. Политики Facebook не позволяют предварительно заполнять сообщения о состоянии и требуют, чтобы весь контент был создан пользователем, - хотя я понимаю намерение за этим я лично считаю, что во многих случаях это глупо. Например, в моей игре я хочу предварительно заполнить счет пользователя, но теперь я не могу, поэтому пользователю представлено пустое диалоговое окно. Вероятно, я просто удалю вариант совместного использования Facebook, поскольку никто никогда не будет использовать его сейчас.
Этот ответ из Facebook подтверждает, что поведение по дизайну
NSString* text=@"Hello world";
NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"];
// UIImage * myImage =[UIImage imageNamed:@"myImage.png"];
NSArray* sharedObjects=@[text,myWebsite];
UIActivityViewController * activityViewController=[[UIActivityViewController alloc]initWithActivityItems:sharedObjects applicationActivities:nil];
activityViewController.popoverPresentationController.sourceView = self.view;
[self presentViewController:activityViewController animated:YES completion:nil];
Вот ответ в Свифте. Это может не помочь вашей проблеме, но может быть полезно с тем, кто ищет этот заголовок. Просто создайте кнопку, и это действие. И установите действие кнопки, как это.
Примечание: вам нужно войти в свою фейсбук или твиттер, перейдя к настройке. Тогда сделайте так.
@IBAction func onShareTouched(sender: AnyObject) {
print("share")
let myShare = "My beautiful photo! <3 <3"
let image: UIImage = UIImage(named: "yourImageNameHere")
let shareVC: UIActivityViewController = UIActivityViewController(activityItems: [(image), myShare], applicationActivities: nil)
self.presentViewController(shareVC, animated: true, completion: nil)
}