swiftios13uikeycommand

UIKeyCommand discoverabilityTitle deprecated


According to documentation convenience initializer with discoverabilityTitle is now deprecated:

    // Key Commands with a discoverabilityTitle _will_ be discoverable in the UI.
    @available(iOS, introduced: 9.0, deprecated: 13.0)
    public convenience init(input: String, modifierFlags: UIKeyModifierFlags, action: Selector, discoverabilityTitle: String)

What's the alternative for creating user discoverable key command now?


Solution

  • New extended initializer is introduced in iOS 13:

    @available(iOS 13.0, *)
    extension UIKeyCommand {
    
        /// Initializes a key command with extra properties.
        ///
        /// - Parameters:
        ///   - title: Short display title. This should be localized.
        ///   - action: Action to execute on choosing this command.
        ///   - input: Keys that must be pressed to choose this command.
        ///   - modifierFlags: Bit mask of key modifier flags to choose this command.
        ///   - propertyList: Property list object to distinguish commands, if needed.
        ///   - alternates: Alternates that differ in modifier flags, if needed.
        ///   - image: Image that can appear next to the command, if any.
        ///   - discoverabilityTitle: Elaborated title, if any.
        ///   - isEnabled: Whether to enable or disable the command.
        ///   - state: State that can appear next to the command.
        public convenience init(title: String, action: Selector, input: String, modifierFlags: UIKeyModifierFlags = [], propertyList: Any? = nil, alternates: [UICommandAlternate] = [], image: UIImage? = nil, discoverabilityTitle: String? = nil, isEnabled: Bool = true, state: UIMenuElement.State = .off)
    }