import AppKit extension NSView { /// Recursively finds and returns descendant views that have the given class name. func descendants(withClassName name: String) -> [NSView] { var result = [NSView]() for subview in subviews { if String(describing: type(of: subview)) == name { result.append(subview) } result += subview.descendants(withClassName: name) } return result } }