I am using this code in my app to share a URL to other apps using share extension.
NSArray *activityItems = #[adURL];
UIActivityViewController *activityViewControntroller = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
activityViewControntroller.excludedActivityTypes = #[];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
activityViewControntroller.popoverPresentationController.sourceView = self.view;
activityViewControntroller.popoverPresentationController.sourceRect = CGRectMake(self.view.bounds.size.width/2, self.view.bounds.size.height/4, 0, 0);
}
[self presentViewController:activityViewControntroller animated:true completion:nil];
When WhatsApp is selected I get a view like this:
Is there any way I can change the color of the right 'Send' button in the navigation bar?
You can set this property on the modal before opening, something like the following
modal.navigationController.navigationBar.barTintColor = ...
This will change the navigationBar color, you can select your app color there,, this will make send button prominent automatically.
Related
I'm writing my app on iOS 9.3. However, my app's share sheet screen is bigger than the other app's share sheet screen. Is there any way to modify the share sheet screen to the iPhone original icons size?
Following are my code:
- (IBAction)onShareButtonClick:(UIButton *)sender {
NSString *string = #"Upload Chart";
UIImage *uploadImage = [self.selectedController performSelector:#selector(getUploadImage)];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:#[string, uploadImage] applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];}
As the comment below, I found that getUploadImage is only getting the part of the screen.
if I modify the code as follow, the share sheet would be only "more more" instead. However, the size of the share icon is the same as the origin.
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityVC applicationActivities:nil];
Because the activityVC is empty.
I'm currently implementing an iOS app using objective-C, which has a function that users may share a file with other friend or other app (like upload the file to Dropbox, Google Drive, attach the file to Mail, share the file to Facebook Messenger, Whatsapp, via Bluetooth, etc).
Is there a native way to implement this share function that can detect all apps which allows sharing a file, while I don't need to do it one by one?
You want to use UIActivityViewController. Below is an example from NSHipster, which is probably the most comprehensive article I've seen on the subject. And Apple has some good documentation here.
NSString *string = ...;
NSURL *URL = ...;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:#[string, URL]
applicationActivities:nil];
[navigationController presentViewController:activityViewController
animated:YES
completion:^{
// ...
}];
This provide full answer for iPhone and iPad devices
ViewController *contentViewController = [[ViewController alloc] init];
// Present the view controller using the popover style.
contentViewController.modalPresentationStyle = UIModalPresentationPopover;
[self presentViewController:contentViewController
animated:YES
completion:nil];
// Get the popover presentation controller and configure it.
UIPopoverPresentationController *presentationController =[contentViewController popoverPresentationController];
presentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
presentationController.sourceView = self.view;
presentationController.sourceRect = self.view.frame;
UIPopoverPresentationController should have a non-nil sourceView or barButtonItem set before the presentation occurs on iOS 9
I've a problem with the UIActivityController on iOS 8 iPad: the activity view works correctly I can select a share service (i.e. Twitter) but when the "publish" view appear I can only click on the Post button,the Cancel button doesn't work. I've the same problem on real devices and on the simulator.
If you have an idea about how to fix this problem,...
Thanks
Here's my code:
- (IBAction)activityController:(id)sender {
// items to share
NSURL *url = [NSURL URLWithString:_articleUrl];
NSArray *items=#[url];
// create the controller
UIActivityViewController *controller = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
[self presentViewController:controller animated:YES completion:nil];
UIPopoverPresentationController *popPC = controller.popoverPresentationController;
popPC.barButtonItem = _buttn;
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
I'd like to create very similar sliding up menu as share/bookmark/copy/paste menu in iOS7 Safari.
What is the best way of building it?
Is there any ready made template in XCode or do I have to follow the same principle as when building the slide left/right hamburger menu?
example action:
-(IBAction)sendPost:(id)sender {
NSArray *activityItems;
activityItems = #[#"example share / copy text"]; //needs to be an array because you //could add pictures additionally
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityController
animated:YES completion:nil];
}
I´m trying to use the following code in my app to get the uiactivityviewcontroller, and it works if I set up a round rect button, but not with a UIBarButtonItem? Am I missing something really simple here?
- (IBAction)shareIt:(id)sender {
NSArray *activityItems;
activityItems = #[_textView.text];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
}
I'm guessing (read: I'm sure) that this is happening because you didn't hook up the action to the barButtonItem correctly in code. If you are making it in code, you can use this:
UIBarButtonItem *bBI = ...; //get it
[bBI setTarget:self];
[bBI setAction:#selector(shareIt:)];