2

アプリにドラッグ アンド ドロップ機能を実装しようとしていますが、mouseUp イベントが発生しないという問題が発生しました。ビューをクリックして離すだけで問題なく起動しますが、ドラッグすると、mouseDragged イベントが発生し、それだけです。

さまざまなことを試すことで、問題が私の dragImage 呼び出しにあることがわかりましたが、今のところ解決方法がわかりません。

これが私のコードです:

-(void) mouseDragged:(NSEvent *)theEvent
{
   isDragging = YES;

   if ([selectedCellRowIndex longValue] >= 0)
   {
      NSImage *im = [[NSImage alloc]initWithContentsOfFile:@"/Users/UserName/Desktop/drag.png"];
      NSSize dragOffset = NSMakeSize(0.0, 0.0);
      NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];

      [pboard declareTypes:[NSArray arrayWithObject:NSTIFFPboardType]  owner:self];
      [pboard setData:[im TIFFRepresentation] forType:NSTIFFPboardType];

      [self dragImage:im
                   at:downPointRelativeToTable
               offset:dragOffset
                event:theEvent
           pasteboard:pboard
               source:self
            slideBack:YES];
  }
} 

私の問題がどこにあるのか誰か知っていますか?! ありがとうございました!

4

2 に答える 2

1

これは、単純な NSView の子孫で見ました。mouseDown でドラッグ操作が開始されましたが、mouseUp はトリガーされませんでした。代わりに、ドラッグ操作が完了するまで super への呼び出しがブロックされました (明らかにローカル実行ループ)。したがって、呼び出しがスーパーから返された後、mouseDown 関数に mouseUp 処理を配置する必要がありました。

于 2013-04-05T07:55:59.630 に答える