2016-05-06 18 views
-1

OSX関連の質問をする前に、MS Windowsの機能を記述できるようにしてください。XCode/Swift OSX。 ViewBased NSTableViewのセルの選択と編集

アプリケーションにシンプルなDataGridが含まれているMS Visual StudioでWindowsアプリケーションを作成すると、ユーザーは単にセルをクリックしてコンテンツを編集し、キーボードの上/下矢印キーを使用して素早くセルから次のもの。セルからキーイングすると、EndEditイベントがトリガされます。そのような上下矢印キーを使用すると、Enterキーを押さずに、またはマウスを使用せずに列編集値を素早く下に移動することができます。

私はOSX XCode/Swiftで同じことをしようとしています。マウスを使用してセルをクリックして編集することは問題ありません。しかし、編集のためにセルを2回クリックしなければならないかのように思えます。そして、編集後、私はEnterキーを押すか別のセルをクリックする必要があります。私は単純に上/下矢印キーを使ってセルからキーアウトすることはできません。

これは単にOSXの仕組みですか?つまり、OSXアプリケーションをネイティブアプリケーションのように動作させたいと思っていますが、たとえば、ユーザーがいくつかのセルを編集しようとした場合には、多くの入力とクリックが必要になるようです。

ViewBased TableViewで設定する必要があるプロパティはありますか?

長いメールについてお詫び申し上げます。

おかげで、私はまさに私が望むように動作するように見える何かを持っている傷ずっと頭の後 イアン

+1

これまでに試したことが大好きです。理論的には、あなたの行動を達成することは完全に可能です。 OSXのExcel(Numbers)を想像してみてください。あなたは間違いなく同様のものを作ることができます。 – Akaino

+0

これまでは、IDE Attributes Inspectorでプロパティをトグルしてみました。セルがどのように選択されているかに関連するカップルがあります。また、EditEndイベントがどのように発生するかに関連するものがあります。しかし、私はちょうどセルからフォーカスを取り出す方法に関連する何も見ることができません - つまり、ユーザーが上下の矢印キーを押して次のセルに移動できるようにするもの。たぶん私はちょうどkeypressesをトラップし、行を上下にプログラム的にシフトし、次のセルに編集のフォーカスを与える必要があるかもしれません - つまり、私自身でロールを張る必要があります。つまり、Mac以外のUI 。 – IanS

+0

IBフラグafaikを設定するだけでは、その動作を達成できません。プログラムでkeyPressイベントをキャッチするのは正しい方法です。私は同じツアーに行くだろう。 – Akaino

答えて

0

myTableViewはNSViewController上にあります。 NSViewControllerさんのviewDidLoadで は()私は、この持っている:私は告白する必要が

super.viewDidLoad(); 

NSEvent.addLocalMonitorForEventsMatchingMask(NSEventMask.KeyDownMask, handler:{ 
    (event: NSEvent) in 
    self.myTableView.keyDown(event); 

    switch(event.keyCode) 
    { 
     case 36: 
      return nil; 
     case 125: 
      return nil; 
     case 126: 
      return nil; 
     default: 
      return event; 
    } 
}) 

を私は100%確実ではないですが、私の考えはのtableViewのデフォルトの動作は、アップ/ダウン矢印キーのためのものであることでした行の選択を行の上または下に移動することはできますが、セルが編集されているときは行なわれません。テキストセルに編集フォーカスがある場合、上/下キーは単にカーソルをセルの開始/終了(つまりセル内のカーソルの移動)に移動します。私が望む振る舞いではないので、セル内のイベントを飲み込めるようにすれば、矢印キーがテーブルビューにバブルアップし、上/下の行が選択されます。

とにかく私の思考がどこにあっても、これは私が望むように正確に動作するように見え、編集フォーカスが次のセルに到着すると即座にフォーカスが得られます。基本的には、Excelや数字などのプログラムと同じように動作します。

関連する問題