标签: modalviewcontroller

iOS 13/14 模态视图控制器解除检测

我有一个以模态方式呈现的观点。这是 iOS 13/14 中向下滑动关闭功能的一部分。

当用户开始关闭模态视图时,我收到此委托调用:

func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {

}
Run Code Online (Sandbox Code Playgroud)

一旦用户开始向下拖动视图,就会调用此函数。但是,它可以被取消。

一旦视图完成关闭,以下调用就会给我:

func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {


}
Run Code Online (Sandbox Code Playgroud)

我需要知道用户何时完成关闭手势以及视图将完成关闭

我能够向前迈出几步,但仍然缺少上述所需的检测:

func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {
        
        //User started dismissing, with no guarantee

        self.transitionCoordinator!.animate(alongsideTransition: {(context: UIViewControllerTransitionCoordinatorContext) -> Void in
            
            //Dismissal is animating. Could be finishing or canceling the dismissal

            
        }, completion: {(  context: UIViewControllerTransitionCoordinatorContext) -> Void in
            if context.isCancelled {
                //Dismissal got cancelled
            } else {
                //Dismissal has completed. Too Late!
            }
        })

        
        
    }
Run Code Online (Sandbox Code Playgroud)

xcode dismiss modalviewcontroller ios swift

2
推荐指数
1
解决办法
957
查看次数

在应用程序出口上关闭模态视图控制器

当用户按下按钮时,我有一个视图控制器(视图A)呈现模态视图(B),视图B本身有一个按钮来呈现视图C.我的问题是如果用户在视图B或视图B时退出应用程序显示C,下次启动应用程序时将显示相同的视图.有没有办法在退出时关闭视图B和C,或者在应用程序启动时显示视图A?谢谢你的帮助

iphone objective-c modalviewcontroller

1
推荐指数
1
解决办法
2268
查看次数

调整局部卷曲效果

有没有办法在呈现模态视图控制器时控制部分卷曲效果的效果?在地图应用程序中,部分卷曲不会像我在我的应用程序中使用时那样高.基本上我只是想模仿页面卷曲,就像它在地图应用程序中一样.

谢谢

iphone page-curl modalviewcontroller

1
推荐指数
1
解决办法
1068
查看次数

从SubView呈现模态ViewController

我试图从视图控制器B呈现模态视图控制器C.B的视图不覆盖整个屏幕,并且是另一个视图控制器的子视图,A.当我尝试呈现全屏模态时我看到的是模态覆盖整个屏幕,但是当我点击屏幕中的某些位置时,控件将"传递"到A的视图.

我可以通过某种授权从A中呈现模态来绕过这一点,但我不知道为什么会发生这种情况!毕竟,如果你有一个标签栏控制器来管理你的一个视图,并且你试图呈现一个模态视图,它就可以完全覆盖整个屏幕.幕后有什么魔法吗?

objective-c modalviewcontroller ios

1
推荐指数
1
解决办法
6503
查看次数

应用程序激活时删除模态视图控制器

在我的应用程序中,我有一个按钮,当用户点击它时,它会弹出一个模态视图控制器,它获取用户的位置(带有UIActivityIndicator图像和图像).当它有位置时,它会将它们发送到另一个应用程序.

这适用于较旧的设备(没有多任务处理),因为应用程序在我返回之后只是重新启动回到之前的状态.

但是在具有多任务处理的设备上,当我恢复应用程序时,告诉用户它正在获取其位置的视图仍然存在 - 这根本不是所希望的.

我的第一个想法是设置一个BOOL,当它要将它们发送到另一个应用程序时,然后在viewDidAppear,如果BOOL为真,则关闭模态视图.

如果viewDidAppear在应用程序恢复活动时被调用,那将会有效.正如我刚才所了解的那样,事实并非如此.

有一种方法,视图控制器可以响应应用程序恢复活动到该视图的时间吗?或者,我是否必须与应用代表一起设置委托等?如果是这样,你能解释一下我会怎么做吗?

iphone multitasking modalviewcontroller ios

1
推荐指数
1
解决办法
852
查看次数

即使在呈现模态视图控制器时,如何保持键盘存在?

我有一个模态视图控制器,UITextView成为第一个响应者,键盘显示.

加载此屏幕后,用户可以在提交之前对其输入进行分类.这通过顶部呈现的另一个模态视图控制器发生.

当呈现第二个键盘时,键盘被解除,用户选择,然后当初始UITextView再次成为第一响应者时再次出现.

如何在不解除键盘的情况下呈现第二个模态视图控制器?

编辑:我已经实现了UITextViewDelegate的一部分,我仍然没有得到所需的结果.

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiviewcontroller modalviewcontroller

1
推荐指数
1
解决办法
1489
查看次数

如何使用UIModalPresentationPageSheet调整modalViewController的大小

我有一个模态视图控制器,我用UIModalPresentationPageSheet显示.问题是他的默认大小对我的内容来说太大了:所以我想调整大小是根据我的内容进行调整.

有没有人知道这样做的方法/技巧?

谢谢

frame ipad modalviewcontroller uimodalpresentationstyle cgrect

1
推荐指数
1
解决办法
6461
查看次数

尝试在视图不在窗口层次结构中的VC上显示模态VC

我的故事板看起来像这样:

故事板

这是它的工作原理:在其.m文件中InitialSlidingViewController实例化导航VC topViewController,如下所示:

 -(void)viewDidLoad {
  [super viewDidLoad];

  self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Navigation"];

}
Run Code Online (Sandbox Code Playgroud)

导航VC实例化后,它会创建基础菜单并将其设置为underLeftVC.这是使用ECSlidingViewController.这将创建一个使用平移手势的滑动菜单,类似于Facebook.

NavigationVC的rootVC是我的ItemsCDTVC.当我点击+按钮时,它会弹出一个动作表,允许我从相机拍摄照片或从照片库中选择.但是,我希望它以模态方式转换为ManageItemVC并设置我刚刚选择/拍摄到UIImageView的图片.当我尝试呈现时,它会抛出以下错误:

Warning: Attempt to present <ManageItemViewController: 0x81d52a0> on <InitialSlidingViewController: 0x8122ce0> whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)

这是真的,因为InitialSlidingVC不在屏幕上,ItemCDTVC是,但我该如何解决这个问题呢?

我在我的故事板中设置了模态类型segue,其中包含来自底部灵活空间的标识符(当点击时,它没有做任何事情,所以我选择了它来创建视觉segue).这是我在ItemCDTVC中的segue代码:

 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // let's get the edited image
    UIImage *image = info[UIImagePickerControllerEditedImage];
    // but if for some reason we disable editing in the future, this is our safeguard
    if(!image) image = info[UIImagePickerControllerOriginalImage];
    if(image) {
        self.pictureImageView.image = image;
        [self performSegueWithIdentifier:@"addItemSegue" …
Run Code Online (Sandbox Code Playgroud)

objective-c uiimagepickercontroller uinavigationcontroller modalviewcontroller segue

1
推荐指数
1
解决办法
3294
查看次数

dismissViewControllerAnimated:完成:概念?

我有3个viewControllers - BaseViewController-> AviewController-> BviewController.

AviewController在BaseViewController上以模态方式呈现,BviewController在AviewController上以模态方式呈现.

在AviewController中,如果我调用[self dismissViewControllerAnimated:Completion]它,则会关闭AviewController和BviewController.

在BviewController中如果我调用[self.presentingViewController dismissViewControllerAnimated:completion]它只会解散BviewController.为什么AviewController没有被解雇?

这个概念是错误的AviewController = BviewController.presentingViewController.?

我也尝试在BviewContrroller中使用AviewController的弱引用并试图解雇.但仍然只有BviewController被解雇.即[AviewControllerReference dismissViewControllerAnimated:completion]

我理解这个概念有什么错误吗?

uiviewcontroller modalviewcontroller ios

1
推荐指数
1
解决办法
406
查看次数

iOS 13 Modals-以编程方式调用滑动解雇

我想在呈现模态的视图控制器中检测到模态解雇。

这种方法对于在新的卡模式上检测到新的iOS 13滑动解雇效果非常好:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "MyIdentifier" {
        segue.destination.presentationController?.delegate = self
    }
}

extension MyController: UIAdaptivePresentationControllerDelegate {    
    func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
        //clean up UI (de-selecting stuff) once modal has been dismissed
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果模态通过动作以编程方式自行退出,则不会调用presentationControllerDidDismiss:

@IBAction func btnDismissTap(_ sender: Any) {
    self.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

这是一个错误,还是有一种方法可以通过编程方式调用任何“滑动”关闭,以便我可以相同的方式检测所有关闭?目前,我正在为我的模态编写额外的“解雇”委托方法,以解决此问题,这似乎是不必要的。

modalviewcontroller swift ios13

1
推荐指数
3
解决办法
902
查看次数