我目前正在使用Project Catalyst将我的iOS应用程序移植到macOS。我的所有文本字段、文本视图和表视图在活动时都有一个蓝色轮廓。我注意到它在苹果催化剂应用程序(如新闻)在最近的测试,所以我希望这只是一个错误。有没有人找到别的方法把它取出来?
r8xiu3jd1#
你可以迅速地
extension UITextView { #if targetEnvironment(macCatalyst) @objc(_focusRingType) var focusRingType: UInt { return 1 //NSFocusRingTypeNone } #endif }
nwnhqdif2#
它有助于在Catalyst中禁用所有“视图”类中的聚焦环
extension UIView { #if targetEnvironment(macCatalyst) @objc(_focusRingType) var focusRingType: UInt { return 1 //NSFocusRingTypeNone } #endif }
tez616oj3#
如果符合您的需要,也可以在Interface Builder中不为特定按钮编写任何代码的情况下完成此操作。在身份检查器中,只需将用户定义的运行时属性设置为1,如下所示:
4xy9mtcn4#
请不要这样做-这是一个可访问性的焦点指示器,对于只使用键盘的用户很重要。
hpcdzsge5#
有一个私有方法_setFocusRingType:似乎与NSView API匹配。我能够使用它来消除对焦环,尽管这可能无法通过应用程序审查。使用本产品的风险由您自行承担:
_setFocusRingType:
SEL selector = NSSelectorFromString(@"_setFocusRingType:"); NSMethodSignature *signature = [self.textView methodSignatureForSelector:selector]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; [invocation setSelector:selector]; NSUInteger arg = 1; // NSFocusRingTypeNone [invocation setArgument:&arg atIndex:2]; [invocation invokeWithTarget:self.textView];
希望我们能从苹果那里得到真实的的解决方案。
nzk0hqpo6#
对Amerino的答案进行了一点改进,以获得更大的灵活性和在故事板中的使用:
@IBDesignable class UITextViewCS: UITextView { @IBInspectable public var focusRing: UInt = 1 // 0-default, 1-None, 2-Exterior #if targetEnvironment(macCatalyst) @objc(_focusRingType) var focusRingType: UInt { guard [0, 1, 2].contains(focusRing) else { return 0 } return focusRing } #endif }
pb3s4cty7#
这里提出的解决方案在按tab键会在整个视图周围添加一个蓝色矩形的情况下对我不起作用。我见过这种情况发生在UIPageViewController的整个页面、UITableView的单元格等等。我唯一能用来解决这个问题的解决方案是覆盖按键。
#if targetEnvironment(macCatalyst) open override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) { guard let key = presses.first?.key else { return } switch key.keyCode { case .keyboardTab: break default: super.pressesBegan(presses, with: event) } } #endif
7条答案
按热度按时间r8xiu3jd1#
你可以迅速地
nwnhqdif2#
它有助于在Catalyst中禁用所有“视图”类中的聚焦环
tez616oj3#
如果符合您的需要,也可以在Interface Builder中不为特定按钮编写任何代码的情况下完成此操作。
在身份检查器中,只需将用户定义的运行时属性设置为1,如下所示:
4xy9mtcn4#
请不要这样做-这是一个可访问性的焦点指示器,对于只使用键盘的用户很重要。
hpcdzsge5#
有一个私有方法
_setFocusRingType:
似乎与NSView API匹配。我能够使用它来消除对焦环,尽管这可能无法通过应用程序审查。使用本产品的风险由您自行承担:
希望我们能从苹果那里得到真实的的解决方案。
nzk0hqpo6#
对Amerino的答案进行了一点改进,以获得更大的灵活性和在故事板中的使用:
pb3s4cty7#
这里提出的解决方案在按tab键会在整个视图周围添加一个蓝色矩形的情况下对我不起作用。我见过这种情况发生在UIPageViewController的整个页面、UITableView的单元格等等。我唯一能用来解决这个问题的解决方案是覆盖按键。