我的視圖中有一個NSTextView,它應該可以正常工作,但是當我顯示NSAlert並關閉它時,它變得不可編輯(文本仍然可選)。 NSAlert是一個保存/取消提醒,當用戶選擇保存時更新textView的字符串,當用戶按下取消時字符串不會更新。在這兩種情況下,textView都是不可編輯的,當用戶進行更改並希望更改tableView選項時,將顯示警報。OSX NSTextView在顯示NSAlert,NSOpenPanel後變得不可編輯
感覺就像TextView的拒絕第一個響應者,但突破並在控制檯檢查時,它的「真」,我也查了一些其他值後的觀點是不可編輯:
- isEditable是真的
- isSelectable是真的
- canBecomeKeyView是真的
- acceptsFirstResponder是真的
- acceptsTouchEvents是假的,經過測試真實的,但沒有奏效
視頻,從tableview中選擇變化和一個按鈕觸發彈出相同時:video
我彈出代碼
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的更新,以顯示該警報仍然打破它
- 拖動一個新的「不變」的TextView在我的故事板,但現在無論textViews成爲不可編輯
- 我試圖顯示NSAlert當單擊一個按鈕而不是在更改tableView的選擇時。在這裏,我正在編輯的textView保持第一響應者的身份,但只要保存textView,它就再次不可編輯。
- 我試圖觸發只是一個動畫,而不是NSAlert,在這裏textView繼續工作
- 我試圖用疊加視圖替換NSAlert具有標題/描述/按鈕的視圖。顯示該對話框時,TextView的也成了不可編輯
我卡在這個很長一段時間,任何幫助是極大的讚賞, 感謝
爲什麼不直接顯示如何顯示和關閉警報視圖? –
添加了彈出窗口代碼和視頻 –
如果我是你,我會運行搜索並學習如何使用NSAlert。 –