gpt4 book ai didi

ios - UIMenuController 第一次没有更新菜单

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:50 26 4
gpt4 key购买 nike

我有 UITextView,我想在其上添加突出显示作为自定义菜单项。我已注册到以下通知 UIMenuControllerWillShowMenuNotification

通知的方法是这样的:

if textIsHighlighted {
let highlightMenuItem = UIMenuItem(title: "Highlight", action: Selector("highlightText"))
UIMenuController.sharedMenuController().menuItems = [highlightMenuItem]
}
else {
let highlightMenuItem = UIMenuItem(title: "Dehighlight", action: Selector("highlightText"))
UIMenuController.sharedMenuController().menuItems = [highlightMenuItem]
}

虽然第一次menucontroller虽然执行了部分代码但更新失败。它显示最后一个值。我应该在哪里写这部分代码,因为我觉得在 willShow menuController 期间它已经创建,因此无法更新。

最佳答案

希望你现在已经解决了这个问题,但我只是自己想出了这个问题:其他答案说您可以通过在调用 UIMenuControllerWillShowMenuNotification 时添加它来更新菜单项,但这对我不起作用(iOS 9,Swift 2)。

相反,我实现了 UITextView 委托(delegate)方法:textViewDidChangeSelection 并在那里设置相关的菜单项:

func textViewDidChangeSelection(textView: UITextView) {
if self.currentSelectionIsInHighlightedRange() {
self.setUpUnhighlightMenuItem()
} else {
self.setUpHighlightMenuItem()
}
}

private func currentSelectionIsInHighlightedRange() -> Bool {
let allHighlightedRanges = self.document.highlightedRanges()

let selectedTextRange = self.documentView.textView.selectedRange

for range in allHighlightedRanges {
let intersectionRange = NSIntersectionRange(range, selectedTextRange)
if intersectionRange.length > 0 {
return true
}
}
return false
}

关于ios - UIMenuController 第一次没有更新菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32981129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com