//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

extern_protocol!(
    /// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiaccessibilityidentification?language=objc)
    pub unsafe trait UIAccessibilityIdentification:
        NSObjectProtocol + MainThreadOnly
    {
        #[unsafe(method(accessibilityIdentifier))]
        #[unsafe(method_family = none)]
        fn accessibilityIdentifier(&self) -> Option<Retained<NSString>>;

        /// Setter for [`accessibilityIdentifier`][Self::accessibilityIdentifier].
        ///
        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
        #[unsafe(method(setAccessibilityIdentifier:))]
        #[unsafe(method_family = none)]
        fn setAccessibilityIdentifier(&self, accessibility_identifier: Option<&NSString>);
    }
);

/// UIAccessibility.
#[cfg(all(feature = "UIResponder", feature = "UIView"))]
impl UIView {
    extern_methods!();
}

#[cfg(all(feature = "UIResponder", feature = "UIView"))]
extern_conformance!(
    unsafe impl UIAccessibilityIdentification for UIView {}
);

/// UIAccessibility.
#[cfg(feature = "UIBarItem")]
impl UIBarItem {
    extern_methods!();
}

#[cfg(feature = "UIBarItem")]
extern_conformance!(
    unsafe impl UIAccessibilityIdentification for UIBarItem {}
);

/// UIAccessibility.
#[cfg(feature = "UIAlertController")]
impl UIAlertAction {
    extern_methods!();
}

#[cfg(feature = "UIAlertController")]
extern_conformance!(
    unsafe impl UIAccessibilityIdentification for UIAlertAction {}
);

/// UIAccessibility.
#[cfg(feature = "UIMenuElement")]
impl UIMenuElement {
    extern_methods!();
}

#[cfg(feature = "UIMenuElement")]
extern_conformance!(
    unsafe impl UIAccessibilityIdentification for UIMenuElement {}
);

/// UIAccessibility.
#[cfg(feature = "UIImage")]
impl UIImage {
    extern_methods!();
}
