如何在ipad的底部显示UIActionSheet,与目标c中的iphone一样

时间:2016-09-27 07:05:20

标签: objective-c uiactionsheet

我是iOS的新手,我遇到了UIActionSheet的问题。

我的代码就像这样

-(IBAction)picimgbtnClick:(id)sender
{
    UIActionSheet *popup = [[UIActionSheet alloc] initWithTitle:@"Profile Photo" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:
                            @"Gallery",
                            @"Camera",
                            @"Remove Photo",
                            nil];


    popup.tag = 1;
    [popup showInView:self.view];
}

这适用于iPhone,但是当我在iPad上运行时,UIActionSheet出现在中间(见下图),也没有显示取消按钮

enter image description here

在iPhone上,它看起来像这样:

enter image description here

3 个答案:

答案 0 :(得分:1)

首先{@ 1}}已弃用,因此请使用最新代码。

UIActionSheet

正如@balkaran singh所说,它是ipad的默认行为。你无法改变它。如果你想要,那么你具体的自定义类和动画,你可以得到你需要的精确UI。

答案 1 :(得分:0)

此处方法showInViewshowFromRect会在iPhone上使用cancel方法获得showInView选项,但您在iPad中使用的功能相同你不会得到的。

以下是一些您可以自定义actionSheet来源的方法,请参见下图:

enter image description here

UIActionSheet's showFromRect:inView:animated:方法仅应在iPad上使用。它在iPhone上的行为未定义。

希望这会对你有所帮助。

答案 2 :(得分:-1)

您无法在iPad底部显示操作表,您可以做的是显示提醒。

自iOS 8以来已弃用的UIActionSheet类,不应再使用。相反,你应该使用UIAlertController。这几乎是一样的:

UIAlertController *alert =
    [UIAlertController alertControllerWithTitle:@"Profile Photo"
                                        message:@"Select method of input"
                                 preferredStyle:UIAlertControllerStyleAlert];

[alert addAction:[UIAlertAction actionWithTitle:@"Gallery"
                                          style:UIAlertActionStyleDefault
                                        handler:^void (UIAlertAction *action) {
                                            NSLog(@"Clicked Gallery");
                                        }]];
[alert addAction:[UIAlertAction actionWithTitle:@"Camera"
                                          style:UIAlertActionStyleDefault
                                        handler:^void (UIAlertAction *action) {
                                            NSLog(@"Clicked Camera");
                                        }]];
[alert addAction:[UIAlertAction actionWithTitle:@"Remove Photo"
                                          style:UIAlertActionStyleDefault
                                        handler:^void (UIAlertAction *action) {
                                            NSLog(@"Clicked Remove Photo");
                                        }]];

[self presentViewController:alert animated:YES completion:nil];

这会将选项显示为警报,类似于iPhone上的警报表:

Image of the alert

没有支持的方式以与iPhone上完全相同的方式(从底部)显示它。如果你考虑一下,很难通过多种方式来触及iPad的底部。中心更有意义。