Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 显示NSAlert、NSOpenPanel后,OSX NSTextView将变得不可编辑_Swift_Xcode_Macos_Nsalert - Fatal编程技术网

Swift 显示NSAlert、NSOpenPanel后,OSX NSTextView将变得不可编辑

Swift 显示NSAlert、NSOpenPanel后,OSX NSTextView将变得不可编辑,swift,xcode,macos,nsalert,Swift,Xcode,Macos,Nsalert,我的视图中有一个NSTextView,它可以正常工作,但当我显示一个NSAlert并关闭它时,它将变得不可编辑(文本仍然可以选择)。NSAlert是一个保存/取消警报,当用户选择保存时更新textView的字符串,当用户按下取消时该字符串不会更新。在这两种情况下,textView都是不可编辑的,当用户进行了更改并希望更改tableView选择时,将显示警报 感觉textView拒绝第一响应程序,但在控制台中中断并检查其“true”时,我还检查了视图不可编辑后的一些其他值: 这是真的 这是真的

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

感觉textView拒绝第一响应程序,但在控制台中中断并检查其“true”时,我还检查了视图不可编辑后的一些其他值:

  • 这是真的
  • 这是真的
  • canBecomeKeyView是真的
  • “接受”第一个响应者是真的
  • acceptsTouchEvents为假,测试为真,但不起作用
我的“测试”设置:

视频,从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。在这里,我编辑的文本视图仍然是第一响应者,但一旦离开文本视图,它将再次无法编辑
  • 我尝试只触发一个动画而不是NSAlert,这里textView继续工作
  • 我尝试用带有标题/说明/按钮的覆盖视图替换NSAlert。显示此对话框时,文本视图也变得不可编辑
我在这个问题上坚持了很长时间,非常感谢您的帮助,
谢谢

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

window?.styleMask = NSFullSizeContentViewWindowMask

删除这一行修复了问题。

为什么不显示并关闭警报视图?添加了弹出代码和视频如果我是你,我将运行搜索并学习如何使用NSAlert。能否更具体一点,我尝试了4种不同的方式显示NSAlert,甚至尝试用普通NSView替换NSAlert。。。“搜索NSAlert”是个没用的回答我在这里找到了NSAlert的答案。如果它们都没有帮助,我怀疑我的进一步帮助会有帮助。如果您创建一个自定义窗口类并重写,则可以成为返回真正的itll工作的关键