드로잉이 포함 된 NSScrollView가 있습니다. 드로잉은 NSView의 하위 클래스이며 드롭 타겟입니다. NSBox와 끌기 소스 인 dragBox라는 또 다른 클래스가 있습니다. NSScrollView의 크기를 벗어난 dragBox를 드래그 할 수 있도록 Drawing의 크기를 동적으로 변경할 수 있어야합니다. 현재 NSScrollView의 컨텐트 뷰에서 자동으로 스크롤되는 "핫 영역"을 정의합니다. 문제는 dragBox를 놓을 때 방금 만든 가상 공간에 놓지 않는다는 것입니다. 그것은 뷰포트의 크기에 비례하여 그것을 버립니다. 여기에 코드가 있습니다.끌어서 놓은 컨트롤을 기반으로 NSScrollView를 동적으로 스크롤하는 방법
@implementation Drawing
-(NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender // validate
{
NSLog(@"Updated");
_drawHintPoint = [sender draggedImageLocation];
if ([sender draggingLocation].x > [[self superview] bounds].size.width - 30)
{
NSRect scrollRect = NSMakeRect(0,0, [self bounds].size.width + 30, [self bounds].size.height) ;
[self setFrame:scrollRect];
_drawHintPoint = NSMakePoint([self bounds].size.width + 30, [sender draggingLocation].y);
[self scrollPoint:_drawHintPoint];
}
return NSDragOperationEvery;
}
-(BOOL) prepareForDragOperation:(id<NSDraggingInfo>)sender
{
NSLog(@"Prepared");
return YES;
}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
NSLog(@"Move Box");
NSPoint pt = _drawHintPoint;
pt.x = pt.x - 32;
pt.y = pt.y - 32;
[[_ico box] setFrameOrigin:pt];
return YES;
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
NSLog(@"Drag Entered");
_drawHintPoint = NSMakePoint(0, 0);
return NSDragOperationEvery;
}
제공된 가상 공간에 dragBox를 놓을 수있는 방법은 무엇입니까?
브루스