1

我的视图中有一个 NSTextView 可以正常工作,但是当我显示一个 NSAlert 并关闭它时,它变得不可编辑(文本仍然可选择)。NSAlert 是一个保存/取消警报,当用户选择保存时更新 textView 的字符串,当用户按下取消时字符串不会更新。在这两种情况下,textView 都是不可编辑的,当用户进行更改并想要更改 tableView 选择时会显示警报。

感觉就像 textView 拒绝第一响应者但是当在控制台中打破并检查它的“真实”时,我还在视图不可编辑后检查了一些其他值:

  • isEditable 是 True
  • isSelectable 是 True
  • canBecomeKeyView 是 True
  • 接受FirstResponder 为真
  • 接受TouchEvents 为假,测试为真但没有工作

我的“测试”设置: 设置

视频,从 tableview 选择更改和按钮触发弹出窗口时相同:视频

我的弹出代码

func dialogOKCancel(question: String, text: String) -> Bool {
        let myPopup: NSAlert = NSAlert()
        myPopup.messageText = question
        myPopup.informativeText = text
        myPopup.alertStyle = NSAlertStyle.warning
        myPopup.addButton(withTitle: "OK")
        myPopup.addButton(withTitle: "Cancel")

        return myPopup.runModal() == NSAlertFirstButtonReturn
    }

let answer = self.dialogOKCancel(question: "Ok?", text: "Choose your answer.")

也试过:

        let a = NSAlert()
        a.messageText = "Delete the document?"
        a.informativeText = "Are you sure you would like to delete the document?"
        a.addButton(withTitle: "Delete")
        a.addButton(withTitle: "Cancel")
        a.alertStyle = NSAlertStyle.critical

        a.beginSheetModal(for: self.view.window!, completionHandler: { (modalResponse) -> Void in
            if modalResponse == NSAlertFirstButtonReturn {
                print("Document deleted")
            }
        })

我试过的东西:

  • 删除任何 textView 更新,显示警报仍然会中断它
  • 在我的故事板中拖动一个新的“未触及”文本视图,但现在两个文本视图都变得不可编辑
  • 我尝试在单击按钮而不是更改 tableView 的选择时显示 NSAlert。在这里,我正在编辑的 textView 仍然是第一响应者,但一旦离开 textView,它就再次无法编辑。
  • 我尝试只触发一个动画而不是 NSAlert,这里 textView 继续工作
  • 我尝试用具有标题/描述/按钮的覆盖视图替换 NSAlert。显示此对话框时,textView 也变得不可编辑

我坚持了很长时间,非常感谢任何帮助,谢谢

4

1 回答 1

1

经过长时间的调试,我发现这一行是破坏​​文本字段的行,我将把这篇文章留在网上,以防其他人偶然发现这个奇怪的问题

window?.styleMask = NSFullSizeContentViewWindowMask

删除这条线解决了这个问题。

于 2017-03-20T20:13:23.760 回答