1

私はこの質問に対する答えを探していましたが、手順を実行している間も、mouseDownメソッドを呼び出せないようです。ユーザーが画像をクリックして押したままにすると、「マウスダウン!」と印刷されます。(最終的に私がやりたいのは、ユーザーが画像をクリックして押したままにしてサウンドを再生し、ユーザーが離すとサウンドが停止することです)。

これが私が持っているものです。私のヘッダー:

@interface MyNSImageView : NSImageView <NSImageDelegate> {
}
@end

そして私のクラス:

@implementation MyNSImageView

- (void)mouseDown:(NSEvent *)event {

     if ([[self target] respondsToSelector:[self action]]) {
     [NSApp sendAction:[self action] to:[self target] from:self];
     }
    NSLog(@"Mouse Down!");
}

@end

これは正しく見えますか?もしそうなら、それを妨げる可能性のある他の問題はありますか?そうではなく、私は何をすべきですか?

ヒープに感謝します!

4

2 に答える 2

4

これが私の解決策です:

NSImageViewの上に境界線やタイトルのない非表示のボタンを追加します。

:)

于 2014-11-29T12:02:19.647 に答える
3

最初の考え:実装してみてacceptsFirstResponder、yesを返します。次に、デリゲートにファーストレスポンダーを画像ビューに設定してもらいます。

アップデート:

そこで、新しいプロジェクトを作成し、それにNSImageViewから継承するクラスMyClassを追加しました。mouseDownが実装されています:

-(void)mouseDown:(NSEvent *)theEvent
{
NSLog(@"Mouse Down");
}

そしてinitWithFrameが実装されています:

- (id)initWithFrame:(NSRect)frameRect
{
    self = [super initWithFrame:frameRect];
    if (self) {
        NSURL *newURL = [[NSBundle mainBundle] URLForImageResource:@"ARandomImageIAddedtoProject"];
        NSImage *newImage = [[NSImage alloc] initWithContentsOfURL:newURL];
        [self setImage:newImage];
    }

return self;
}

ビューを表示します。

次に、ウィンドウにカスタムクラスを追加し、カスタムクラスのクラスをMyClassに変更して、nibファイルを編集しました。うまくいったので、何が悪いのかわかりません。

于 2011-08-09T23:59:24.327 に答える