0

したがって、私は基本的に、選択可能なテキスト項目のリストを作成しようとしています(テキストのリストのみ、ボタンベゼル、背景などはありません)。NSTableviewを使用してこれを実現できると思いますが、テーブルビューを完全に透過的で機能的なものにしようとすると、いくつかの問題が発生しました。Anwyays、私はプログラムで作成し、背景やベゼルなしでリストのビューに追加するNSButtonを使用してそれを実行しようとしています。ただし、ボタンを透明にしてベゼルなしにするようにプロパティを設定すると、ボタンのクリック可能な領域は、ボタンのタイトルのテキストのみに追いやられます。ボタンが(タイトルの周りに)あるはずの場所をクリックしても機能しなくなります。これが私が使用しているコードです。クリックを発生させるために、ボタンを作成した長方形のどこでもクリックできるようにしたいと思います。参考までに、チェックボックスの画像なしでNSSwitchButtonを試しましたが、同じことです。ご協力いただきありがとうございます!

for(NSString *theTask in theTasks){
    NSButton *theCheckBox = [[[NSButton alloc] initWithFrame:NSMakeRect(xCoordinate + 25, yCoordinate + ([tasksWindow frame].size.height/2) - 60, [tasksWindow frame].size.width - 40, 25)] autorelease];
    [theCheckBox setButtonType:NSToggleButton];
    [theCheckBox setAction:@selector(taskChecked:)];
    [[theCheckBox cell] setBackgroundColor:[NSColor clearColor]];
    [[theCheckBox cell] setBordered:NO];
    NSAttributedString *theTitle = [[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@", theTask] attributes:[NSDictionary dictionaryWithObject:[NSColor whiteColor] forKey:NSForegroundColorAttributeName]] autorelease];
    [theCheckBox setAttributedTitle:theTitle];
    [[tasksWindow contentView] addSubview:theCheckBox];
    yCoordinate -= 20;
}

更新:背景色をクリアに設定すると、ボタンが境界の完全な範囲内でクリックに応答しなくなるように見えることが確認できました(境界の削除ではありません)。

4

1 に答える 1

0

それで、私自身の質問に答えるために、それは私が透明なNSWindow(マウスイベントを拒否する)の上に透明なボタンをオーバーレイしていたからでした。マウスイベントを無視しないようにウィンドウを設定するだけで、動作がなくなりました。

于 2011-02-12T08:10:56.953 に答える