View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Vidéos

Ouvrir le menu Fermer le menu
  • Collections
  • Toutes les vidéos
  • À propos

Plus de vidéos

  • À propos
  • Code
  • Meet Scribble for iPad

    Scribble offers a lightweight, ergonomic, and enjoyable way of entering text on iPad with Apple Pencil. Discover how people can take advantage of Scribble and handwritten text in apps that use standard text input controls or that implement a custom text editing experience. You'll learn how it integrates into TextKit, and when you'll need to adopt the new UIScribbleInteraction and UIIndirectScribbleInteraction APIs to provide a delightful and consistent experience with Scribble in your app.

    To get the most out of this session, you should be familiar with UIKit text input controls, as well as keyboard input technologies. To get started, watch “Keyboard Input in iOS”. If you're building a custom text editor, you should be familiar with the UITextInput protocol, TextKit, and related text input APIs. For more information, we recommend checking out “TextKit Best Practices” and “The Keys to a Better Text Input Experience.” And for design guidelines on pencil-based interaction, check out “Apple Pencil Design Essentials.”

    Ressources

    • Customizing Scribble with Interactions
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC20

    • Support hardware keyboards in your app
  • Rechercher dans cette vidéo…
    • 9:15 - isHandlingWriting Example

      func updateSearchCompletion() {
          customSearchField.hideCompletionText = interaction.isHandlingWriting
      }
    • 9:35 - UIScribbleInteraction.isPencilInputExpected

      override func viewDidAppear(_ animated: Bool) {
          if UIScribbleInteraction.isPencilInputExpected {
              let lineHeight = textField.font?.lineHeight ?? 17.0
              let heightForScribble = lineHeight * 4.0
              heightConstraint.constant = heightForScribble
          }
      }
    • 9:51 - scribbleInteractionDidFinishWriting

      func scribbleInteractionDidFinishWriting(_ interaction: UIScribbleInteraction) {
          let lineHeight = textField.font?.lineHeight ?? 17.0
          let heightForScribble = lineHeight * 4.0
          heightConstraint.constant = heightForScribble
      }
    • 10:08 - Should Begin

      func scribbleInteraction(_ interaction: UIScribbleInteraction,
                               shouldBeginAt location: CGPoint) -> Bool {
          return !appIsInDrawingMode()
      }
    • 11:41 - Install UIIndirectScribbleInteraction in Engraving Field

      override init(frame: CGRect) {
          super.init(frame: frame)
          indirectScribbleInteraction = UIIndirectScribbleInteraction(delegate: self)
          addInteraction(indirectScribbleInteraction)
          ...
      }
    • 11:48 - Request Elements

      func indirectScribbleInteraction(_ interaction: UIInteraction,
                                       requestElementsIn rect: CGRect,
                                       completion: @escaping ([ElementIdentifier]) -> Void) {
          completion(["EngravingIdentifier"])
      }
    • 12:14 - Frame for element

      func indirectScribbleInteraction(_ interaction: UIInteraction,
                                       frameForElement elementIdentifier: String) -> CGRect {
          return bounds
      }
    • 12:28 - Focus Element if Needed

      func indirectScribbleInteraction(_ interaction: UIInteraction,
                                       focusElementIfNeeded elementIdentifier: String,
                                       referencePoint focusReferencePoint: CGPoint,
                                       completion: @escaping ((UIResponder & UITextInput)?) -> Void)
      {
          if editingTextField == nil {
              createTextField()
          }
          editingTextField?.becomeFirstResponder()
          
          completion(editingTextField)
      }
    • 12:57 - Is Element Focused

      func indirectScribbleInteraction(_ interaction: UIInteraction,
                                       isElementFocused elementIdentifier: String) -> Bool {
          // Indicate if our only element is currently installed and focused
          return editingTextField?.isFirstResponder ?? false
      }

Developer Footer

  • Vidéos
  • WWDC20
  • Meet Scribble for iPad
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines