2017-03-15 11 views
1

私のビューにはNSTextViewが必要ですが、NSAlertを表示して閉じると編集できません(テキストは選択可能です)。 NSAlertは保存/キャンセルアラートで、ユーザーが保存を選択したときにtextViewの文字列を更新し、ユーザーがキャンセルを押したときに文字列が更新されません。どちらの場合も、textViewは編集不可能です。ユーザが変更を加えたときに警告が表示され、tableViewの選択を変更する必要があります。NSAlert、NSOpenPanelを表示した後にOSX NSTextViewが編集不可になる

ビューは編集不可能だった後のTextViewがファーストレスポンダを拒否したが、コンソールには、その「true」を破壊し、チェックするとき、私はまた、いくつかの他の値をチェックするように感じる:

  • isEditableをが
  • がisSelectable本当でした、真の
  • canBecomeKeyViewがTrue
  • acceptsFirstResponderが
  • acceptsTouchEventsがFalseだった本当だった真の試験を行ったが、
  • を動作しませんでした

私の "テスト" の設定:同じ Setup

ビデオ、テーブルビューの選択変更とボタンからポップアップをトリガー: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をドラッグするが、今の両方textViewsが
  • 私はNSAlertを示す試みた編集不可になった壊れ示す、任意のTextViewのアップデートを削除しますtableViewの選択を変更するのではなく、ボタンをクリックするとき。ここで私が編集していたtextViewは、最初のレスポンダーのままですが、textViewを消すとすぐに、編集不能です。
  • NSAlertの代わりにアニメーションをトリガしようとしましたが、ここではtextViewは動作し続けます
  • NSAlertをオーバーレイで置き換えようとしました。タイトル/説明/ボタンを持つビューです。このダイアログを表示するときに、TextViewにはまた、私は長い間、この上こだわっている

編集不可能となり、任意のヘルプは大幅に おかげ

+0

アラートビューを表示して閉じる方法を表示してみませんか? –

+0

ポップアップコードとビデオを追加しました –

+0

私があなただったらNSAlertの使い方を検索して学びました。 –

答えて

1

デバッグの長い時間の後、私がこの行を見つけ、感謝されますテキストフィールドを破った一つで、私は問題を修正し、この行を削除し、この奇妙な問題

window?.styleMask = NSFullSizeContentViewWindowMask 

時にケースの他の誰かがつまずくオンラインこのポストを残します。

+0

これはとても奇妙です。ちょうどこれに遭遇した。ありがとう –

+0

カスタムウィンドウクラスを作成してcanbecomekeyをオーバーライドすると、trueが返されます。 https://stackoverflow.com/questions/9464423/nstextfield-not-editable-in-custom-nswindow –

関連する問題