Skip to content

This override code may frozen screen in iOS 15+ when requestReview for Apple. #143

@doubleLLL3

Description

@doubleLLL3

This override code is in CocoaDebug+Extensions.swift:

open override var canBecomeFirstResponder: Bool { 
    return true 
}

When requestReview for Apple in iOS 15+, like this:

if (@available(iOS 14.0, *)) {
    UIWindowScene *activeScene;
    NSSet<UIScene *> *scenes = [[UIApplication sharedApplication] connectedScenes];
    for (UIScene *scene in scenes) {
        if ([scene activationState] == UISceneActivationStateForegroundActive) {
            activeScene = (UIWindowScene *)scene;
            break;
        }
    }
    if (activeScene != nil) {
      [SKStoreReviewController requestReviewInScene:activeScene];
    }
} else if (@available(iOS 10.3, *)) {
    [SKStoreReviewController requestReview];
}

For iOS 15+, App can perceive the user's interaction on the Review View and make its window (SkstoreReViewPresentationWindow) keyWindow, while App is not perceived before iOS 15.

So in iOS 15.0+, after Clicking on the Review View, the override code in CocoaDebug would make its Window the FIRST responder after becoming the keyWindow.

That causes the windows below never be a responder, so the screen freezes, because the size of SkstoreReViewPresentationWindow is FULL screen.


At last, I'm curious about the reason of the override code(maybe Prevent users from careless?), is this necessary?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions