2017-03-15 68 views
1

我的視圖中有一個NSTextView,它應該可以正常工作,但是當我顯示NSAlert並關閉它時,它變得不可編輯(文本仍然可選)。 NSAlert是一個保存/取消提醒,當用戶選擇保存時更新textView的字符串,當用戶按下取消時字符串不會更新。在這兩種情況下,textView都是不可編輯的,當用戶進行更改並希望更改tableView選項時,將顯示警報。OSX NSTextView在顯示NSAlert,NSOpenPanel後變得不可編輯

感覺就像TextView的拒絕第一個響應者,但突破並在控制檯檢查時,它的「真」,我也查了一些其他值後的觀點是不可編輯:

  • isEditable是真的
  • isSelectable是真的
  • canBecomeKeyView是真的
  • acceptsFirstResponder是真的
  • acceptsTouchEvents是假的,經過測試真實的,但沒有奏效

我的 「測試」 的設置: Setup

視頻,從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的也成了不可編輯

我卡在這個很長一段時間,任何幫助是極大的讚賞, 感謝

+0

爲什麼不直接顯示如何顯示和關閉警報視圖? –

+0

添加了彈出窗口代碼和視頻 –

+0

如果我是你,我會運行搜索並學習如何使用NSAlert。 –

回答

1

經過調試的很長一段時間,我發現這條線是打破了文本框的一個,我會在線的情況下,別人絆倒在這個奇怪的問題

window?.styleMask = NSFullSizeContentViewWindowMask 

除去該行固定的問題離開這個崗位。

+0

這太奇怪了。只是碰到了這個。謝謝 –

+0

如果你創建一個自定義窗口類並覆蓋canbecomekey返回true itll工作 https://stackoverflow.com/questions/9464423/nstextfield-not-editable-in-custom-nswindow –