iOS PencilKit 无法绘图

eli*_*lia 2 ios swift pencilkit

我正在尝试使用 PencilKit,但无法在应用程序中绘制任何内容。我设置我的代码如下。

import UIKit
import PencilKit

class DrawingViewController: UIViewController {

  var canvasView: PKCanvasView!

  override func viewDidLoad() {
    super.viewDidLoad()

    let canvasView = PKCanvasView(frame: view.bounds)
    canvasView.allowsFingerDrawing = false
    view.addSubview(canvasView)

    canvasView.translatesAutoresizingMaskIntoConstraints = false
    canvasView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    canvasView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    canvasView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    canvasView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true

    canvasView.backgroundColor = UIColor.lightGray
    canvasView.tool = PKInkingTool(.pen, color: .black, width: 10)
  }

}
Run Code Online (Sandbox Code Playgroud)

我期望在 canvasView 中绘制/墨迹,但当我尝试该应用程序时没有响应。我的设备运行的是 13.2,所以目标没有问题。我还从 WWDC 2019会议下载了 Apple 的应用程序,但它无法在模拟器中运行。为了澄清起见,我还在真实设备中测试了它,但在任何使用PencilKit的应用程序中都没有响应。

Mar*_*rcy 6

canvasView.allowsFingerDrawing = false如果使用手指或鼠标而不是 Apple Pencil 作为输入,则可能会出现问题。如果尝试这种组合,Apple Pencil 目前无法与 iPhone 配合使用。否则代码看起来不错。


这些是使用 PencilKit 绘图的 iOS 设置

iOS 14

使用 DrawingPolicy 设置启用按输入类型绘制

仅苹果铅笔:

canvasView.drawingPolicy = .pencilOnly
Run Code Online (Sandbox Code Playgroud)

手指、鼠标光标(iOS 模拟器)和 Apple Pencil:

canvasView.drawingPolicy = .anyInput
Run Code Online (Sandbox Code Playgroud)

允许用户使用 Pencil Kit 的工具选择器切换设置所需的输入:

canvasView.drawingPolicy = .default
Run Code Online (Sandbox Code Playgroud)

在“设置”应用程序中,有一个名为“仅使用 Apple Pencil 绘图”的全局设置。这可以从 PencilKit 中读取UIPencilInteraction.prefersPencilOnlyDrawing


iOS 13(iOS14 中已弃用)

仅使用 Apple Pencil 绘图:

canvasView.allowsFingerDrawing = false
Run Code Online (Sandbox Code Playgroud)

使用所有输入类型进行绘制:

canvasView.allowsFingerDrawing = true
Run Code Online (Sandbox Code Playgroud)