我希望检测用户在外部键盘上是否只按“返回”键或按下UITextView键来执行两种不同的操作,而UITextView是响应程序。
当UITextView没有使用UIKeyCommands响应时,它就会工作。
override var keyCommands: [UIKeyCommand]? {
return [
UIKeyCommand(input: "\r", modifierFlags: [], action: #selector(taskOne)),
UIKeyCommand(input: "\r", modifierFlags: .shift, action: #selector(taskTwo)),
]
}
但是当UITextView被编辑时,它只是添加了一个新的行,并且没有检测到这些UIKeyCommands。
我怎样才能解决这个问题?
发布于 2022-08-08 23:18:28
覆盖按开始函数
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
guard let key = presses.first?.key else { return }
switch key.keyCode {
case .keyboardReturn:
if key.modifierFlags == .shift {
taskTwo()
} else {
// not the state for plus you want, pass it
taskOne()
}
super.pressesBegan(presses, with: event)
break
default:
super.pressesBegan(presses, with: event)
}
}
和重写func textView(_ textView: UITextView,shouldChangeTextIn范围: NSRange,replacementText文本: String) -> Bool
对于UITextViewDelegate
https://stackoverflow.com/questions/73282699
复制相似问题