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];
}
}