无法与添加到 Window 的 UIView 交互
Can't interact with UIView added to Window
我正在使用此 objective-c 代码向 window 添加视图:
// Main Storyboard
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
// View controller with the view to add
UIViewController *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"SomeViewController"];
// Find the topmost window
UIWindow *topWindow = [[[UIApplication sharedApplication].windows sortedArrayUsingComparator:^NSComparisonResult(UIWindow *win1, UIWindow *win2) {
return win1.windowLevel < win2.windowLevel || !win1.isOpaque;
}] lastObject];
// Add the view to the window
[topWindow addSubview:vc.view];
这很好用,我在 SomeViewController
中使用的 Swift 方法也可以离开视图:
// Get topmost window (Should be UIWindow)
let topWindow = UIApplication.shared.windows.sorted {
(win1, win2) in
return win1.windowLevel < win2.windowLevel || !win1.isOpaque
}.last
// Force view to prepare to disappear
self.viewWillDisappear(true)
// Send the view to the back
topWindow?.sendSubviewToBack(view)
这是objective-c代码运行后我的视图结构。所选视图是已添加的视图:
问题是 none 新视图中的按钮正常工作,因此我无法触发上述关闭方法。我已经尝试了用故事板添加的按钮和以编程方式添加的按钮。按钮在点击时会在视觉上做出反应,但它们不会触发任何东西。
我最终通过完全换出根视图控制器而不是简单地将其视图添加为子视图来解决问题。问题是@DonMag 指出我在没有视图控制器的情况下添加子视图。我发现 this question 关于交换根视图控制器并将其用作我更改的基础。如果有人想提供不需要交换根视图控制器的完整解决方案,我会接受。
我正在使用此 objective-c 代码向 window 添加视图:
// Main Storyboard
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
// View controller with the view to add
UIViewController *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"SomeViewController"];
// Find the topmost window
UIWindow *topWindow = [[[UIApplication sharedApplication].windows sortedArrayUsingComparator:^NSComparisonResult(UIWindow *win1, UIWindow *win2) {
return win1.windowLevel < win2.windowLevel || !win1.isOpaque;
}] lastObject];
// Add the view to the window
[topWindow addSubview:vc.view];
这很好用,我在 SomeViewController
中使用的 Swift 方法也可以离开视图:
// Get topmost window (Should be UIWindow)
let topWindow = UIApplication.shared.windows.sorted {
(win1, win2) in
return win1.windowLevel < win2.windowLevel || !win1.isOpaque
}.last
// Force view to prepare to disappear
self.viewWillDisappear(true)
// Send the view to the back
topWindow?.sendSubviewToBack(view)
这是objective-c代码运行后我的视图结构。所选视图是已添加的视图:
问题是 none 新视图中的按钮正常工作,因此我无法触发上述关闭方法。我已经尝试了用故事板添加的按钮和以编程方式添加的按钮。按钮在点击时会在视觉上做出反应,但它们不会触发任何东西。
我最终通过完全换出根视图控制器而不是简单地将其视图添加为子视图来解决问题。问题是@DonMag 指出我在没有视图控制器的情况下添加子视图。我发现 this question 关于交换根视图控制器并将其用作我更改的基础。如果有人想提供不需要交换根视图控制器的完整解决方案,我会接受。