- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 View Controller 想要显示 PKCanvasView
和 PKToolPicker
来自 PencilKit。这是代码:
import UIKit
import PencilKit
class ViewController: UIViewController {
@IBOutlet weak var canvas: PKCanvasView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
canvas.backgroundColor = .lightGray
canvas.allowsFingerDrawing = true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// self.showPicker()
self.perform(#selector(showPicker), with: self, afterDelay: 0)
}
@objc private func showPicker() {
guard let window = UIApplication.shared.windows.filter({ $0.windowScene?.activationState == .foregroundActive }).first else {
return
}
let picker = PKToolPicker.shared(for: window)
if let picker = picker, picker.isVisible {
return
}
print("Picker not visible")
picker?.setVisible(true, forFirstResponder: canvas)
picker?.addObserver(canvas)
picker?.addObserver(self)
canvas.becomeFirstResponder()
self.perform(#selector(showPicker), with: self, afterDelay: 0.5)
}
}
extension ViewController: PKToolPickerObserver {
}
ViewController
作为 Storyboard中的初始 ViewController,
PKToolPicker
在屏幕底部显示自己就好了。这是工作
DrawingViewController
的屏幕截图
ViewController
带有新的
UIWindow
.然后
PKToolPicker
不显示。
ViewController
没有任何问题。代码。这可能是我如何创建新 UIWindow 的问题。
SceneDelegate.swift
中的以下代码(注意我正在使用 iOS 13)创建窗口:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window.windowScene = windowScene
window.rootViewController = UIStoryboard(name: "Main", bundle: .main).instantiateViewController(withIdentifier: "ViewController")
self.window = window
}
ViewController
中添加了一个计时器,我注意到当
PKToolPicker
实际显示,
PKCanvasView
实际上成为第一响应者。不是立即,而是几秒钟后。当我使用以编程方式创建的
UIWindow
,
PKCanvasView
永远不会成为第一响应者。所以也许这与我的窗口没有要求以某种方式成为第一响应者这一事实有关。
SceneDelegate.swift
,那里有创建我自己的窗口的代码。如果我将此代码注释掉,我会毫无问题地看到我的工具选择器。当我取消注释代码时,它不显示工具选择器。
最佳答案
我今天只是在玩同样的 API,遇到了同样的问题。我认为问题在于您在场景委托(delegate)中创建窗口,您缺少:window.makeKeyAndVisible()
加上删除 Info.plist 中的 Storyboard 引用,因为您是在场景委托(delegate)中手动加载它。只需删除 key UISceneStoryboardFile
里面 UIApplicationSceneManifest
我认为问题在于操作系统正在为您创建窗口(基于 Info.plist),但随后您将使用自己手动创建的窗口覆盖该窗口。实际可见的窗口(Info.plist 创建了一个)不能再被引用。
关于ios - PencilKit 中的 PKToolPicker 不会显示在以编程方式创建的 UIWindow 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61106504/
我有 2 UIWindows , 当我同时显示 UIWindows最新显示UIWindow总是在显示的第一个之上 UIWindow .每个UIWindow是自己的UIWindow , 所以没有 Sub
我知道这看起来是个大问题,但事实并非如此,所以请不要害怕阅读它。主要是我在解释这些东西是如何工作的。 我有两个 UIWindow在我的应用程序中。第一个是应用程序默认创建的主窗口。第二个叫modalW
我们可以在 native mac 应用程序中使用 NSWindow 和 NSVisualEffectView 轻松创建这种效果,但是我们如何在为 MacCatalyst 构建的应用程序中实现呢? 当然
我已将 Objective-C 文件转换为 Swift,现在转换为: if isCaptured { let colourView = UIView(frame: window.frame)
我有一个 UIWindow 对象,我想将其显示在 Storyboard顶部。我是这样做的 - UIWindow *webWindow = [[UIWindow alloc] initWithFrame
我正在处理一个大约有 7/8 年历史的旧 Xcode 项目,我已将其迁移到 Objective-C 2.0 并支持 ARC。在我参与该项目之前,该项目不支持自动布局(这是在它发布之前)。我已经设法解决
我创建了一个正在加载的 UIWindow,当我开始加载时,我会调用它并 makeKeyAndVisible 。完成后,我 makeKeyAndVisible 我的主 UIWindow。但我的问题是,执
当发送keyboardWillShowNotification时,我可以通过向上移动系统键盘的窗口来将系统键盘移动到选项卡栏上方。然而,当 View Controller 嵌入到导航 Controll
尝试在 IOS 应用程序的关键 UIWindow 上添加一个覆盖窗口。但是,新的覆盖 UIWindow 似乎在任何地方都不可见。 不过,基于 lldb,它似乎已成功添加: (lldb) po UIAp
我有一个自定义的 UIWindow,它是我自己的状态栏,所以我想隐藏状态栏并显示我的状态栏。我有 override var prefersStatusBarHidden: Bool { ret
我有一个应用程序,其中有两个 UIWindow 实例的用例。第一个实例运行所有正常的应用程序交互,但我需要能够在没有用户交互的情况下,无论用户在应用程序中做什么,都能够在所有其他内容之上呈现一个 Vi
我在另一个 UIWIndow 上添加了一个新的 UIWIndow 以显示一个 View ,但它没有显示任何内容,而且屏幕变得有点模糊。这是代码: UIWindow* topWindow = [[UIW
我只是想继承 UIWindow 以便拦截一些通知。除了下面列出的代码,我还进入 MainWindow.xib 并将 UIWindow 对象更新到我的子类。它加载正常,问题是我的选项卡栏上的选项卡没有响
我总是看到对应用程序“窗口”的引用,而且我看到 AppDelegates 通常有一个名为“窗口”的 UIWindow 属性。所以我只是想知道如何感知这个 UIWindow 对象。我看到它是 UIVie
我正在向我的应用添加一个额外的 UIWindow。我的主窗口正确旋转,但我添加的这个附加窗口不旋转。 根据当前设备方向旋转 UIWindow 的最佳方法是什么? 最佳答案 您需要自己为 UIWindo
我认为这很容易,因为 [myWindow resignKeyWindow] 和 [self.window makeKeyAndVisible] 但我想不是……你们知道该怎么做吗? 谢谢:) 最佳答案
在我的应用程序中,我想在主 UIWindow 上创建一个新的 UIWindow,我写如下,但它不起作用。首先,我创建一个 UIWindow 作为主窗口,然后将其设置为键和可见,然后创建一个新的 UIW
我读过的每个视频教程和书籍都会显示以下代码,用于将 UIView 添加到 UIWindow。 [窗口addSubview:self.viewController.view]; 我对上面代码的理解是,将
我的应用程序中需要三个不同的部分:登录屏幕、主屏幕和横向模式下的屏幕,所有这些都完全不同。我看到苹果坚持认为应用程序应该有一个窗口,所以我想问:为此最好使用什么?三扇大 window ,还是风景?层次
我需要查看窗口上的触摸事件,因此我将 UIWindow 子类化以创建 MYWindow 类。我正在重写 sentEvent 函数来接收窗口上的触摸事件,所有这些都工作得很好。为了实现这一目标,我做了以
我是一名优秀的程序员,十分优秀!