0

iOS/iPadOS 支持Presenting Content on an External Display,但是如果我们将 UITextView 放在外部显示器上,似乎 UITextView 将变得不可编辑,尝试将外部窗口设置为关键窗口[self.extWindow makeKeyWindow];,但没有帮助。我没有找到任何文件解释这种行为,我是否缺少设置的任何属性或者它是平台的限制?这里附上我的代码

-(void)extDisplayConnected {
    UIScreen *extDisplay = [UIScreen screens].lastObject;
    self.extWindow = [[UIWindow alloc] init];
    NSSet<UIScene *>* scenes = [[UIApplication sharedApplication] connectedScenes];
    UIWindowScene *matchingWindowScene;
    for (UIScene *s in scenes) {
        UIWindowScene *windowScene = (UIWindowScene *)s;
        if ([windowScene.screen isEqual:extDisplay]) {
            matchingWindowScene = windowScene;
            break;
        }
    }
    if(matchingWindowScene == nil) {
        dispatch_after(2000, dispatch_get_main_queue(), ^{
            [self extDisplayConnected];
        });
    } else {
        [self.extWindow setWindowScene:matchingWindowScene];
        self.extViewController = [[ExtViewController alloc] init];
        self.extWindow.rootViewController = self.extViewController;
        [self.extWindow setHidden:NO];
    }
}
-(void)buttonClicked:(UIButton*)sender
{
    // when click button ,will move textView between main window and 
    // external window, but only editable when it locate on main window
    if(self.extWindow) {
        if([self.extViewController.view.subviews containsObject:self.textView]) {
            [self.textView removeFromSuperview];
            [self.view addSubview:self.textView];
            [self.mainWindow makeKeyWindow];
            [self.extWindow resignKeyWindow];
        } else {
            [self.textView removeFromSuperview];
            [self.extViewController.view addSubview:self.textView];
            [self.extViewController.view bringSubviewToFront:self.textView];
            [self.mainWindow resignKeyWindow];
            [self.extWindow makeKeyWindow];
        }
        [self.textView resignFirstResponder];
        [self.textView becomeFirstResponder];
    }
}
4

0 回答 0