7

ビューベースのテーブルビューで通常の(サブクラス化されていない)NSTableCellViewを使用しています。初期画像とテキストフィールドビューがあります。ビューにNSStepperを追加しました。

テキストフィールドはtableCellView.objectValue.quantityにバインドされています。ステッパーの値もtableCellView.objectValue.quantityにバインドされます。

問題は、アプリを実行しているときに、ステッパーをクリックしてもマウスイベントが発生しないようで、どちらの矢印も強調表示されず、値がインクリメントまたはデクリメントされないことです。

テーブルビューのダブルアクションを設定した場合、ステッパーを透明であるかのようにダブルクリックするとトリガーされます。

私は何が欠けていますか?

ありがとう!

4

2 に答える 2

9

ドキュメントを確認する必要がありますが、最も簡単なのは、NSTableViewをサブクラス化し、このメソッドをオーバーライドして、提案されたファーストレスポンダーを検証する必要があることです。ドキュメントに記載されているように、NSTableViewsは、行が最初に選択されない限り、一部のコントロールの使用を許可していません。それでも、それはまだいくつかを捨てるかもしれません。

- (BOOL)validateProposedFirstResponder:(NSResponder *)responder forEvent:(NSEvent *)event {
    return YES;
}
于 2012-11-01T06:35:27.690 に答える
0

Robert Payneからの正解に加えて、Swiftを使用すると、NSTableViewに拡張機能を追加でき、サブクラス化することはできません。

extension NSTableView {
    override public func validateProposedFirstResponder(responder: NSResponder, forEvent event: NSEvent?) -> Bool {
        return true
    }
}

そして、それはNSTableViewCellではなくNSTableViewであることを強調したいと思います。

于 2016-04-23T13:24:07.027 に答える