1

我必须使用 UIAlertController 显示带有选择器、取消和完成按钮的视图。这是我编写的代码:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:UIAlertControllerStyleActionSheet];
        UIAlertAction *alertAction = [UIAlertAction actionWithTitle:@"" style:UIAlertActionStyleDefault handler:nil];
        [alertController addAction:alertAction];
        [alertController.view addSubview:pickerView];
        [alertController.view addSubview:cancelBtn];
        [alertController.view addSubview:doneBtn];
        [alertController.view setBounds:CGRectMake(0, 180, self.view.frame.size.width, 400)];

这就是我调用当前视图控制器方法的方式:

UIPopoverPresentationController *popover = alertController.popoverPresentationController;
       if (popover)
       {
          popover.sourceRect = CGRectMake(0, 0, 320, 550);
          popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
        }
 [self presentViewController:alertController animated:YES completion:nil];

在屏幕上出现警报控制器屏幕后,我无法点击取消和完成按钮以及屏幕上的任何位置。请帮我解决这个问题。

如果没有设置边界,取消和完成按钮会出现在页面底部: 在此处输入图像描述

每当我为 alertcontroller 设置边界时,我都能看到正确的视图,但无法选择任何内容: 在此处输入图像描述

4

1 回答 1

0

我敢打赌你的界限不正确。所以这一行:

[alertController.view setBounds:CGRectMake(0, 180, self.view.frame.size.width, 400)];

正在将您的视图范围设置为从 180 开始。

编辑:根据下面的评论如果你想设置按钮位置,你应该修改你的按钮框架,而不是 alertview 边界。

记住框架是根据父视图坐标系的视图位置。边界是与其自身坐标系相关的视图限制。

于 2014-10-28T08:45:10.377 回答