Difference between revisions of "NSView"
Jump to navigation
Jump to search
(Added categories) |
|||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | NSView is . | + | NSView is an [[AppKit]] class. It's role as a superclass is to provide most of the core functionality and services that specific GUI classes (such as NSButton or NSMenuView) use to display/render and handle events. |
== Code chunks == | == Code chunks == | ||
Line 71: | Line 71: | ||
[self setNeedsDisplay:YES]; | [self setNeedsDisplay:YES]; | ||
} | } | ||
+ | |||
+ | |||
+ | [[Category:AppKit]] | ||
+ | [[Category:Snippets]] |
Latest revision as of 15:46, 21 April 2006
NSView is an AppKit class. It's role as a superclass is to provide most of the core functionality and services that specific GUI classes (such as NSButton or NSMenuView) use to display/render and handle events.
Code chunks
Dragging objects
Note: following code can be somehow optimised by adding small 0.01s delay or something like that. If someone knows how to, please write it here.
Implement the mouseDown: method:
- (void)mouseDown:(NSEvent *)event { NSPoint oldPoint; NSEvent *presentEvent; NSEventType eventType = [event type]; unsigned int eventMask = NSLeftMouseDownMask | NSLeftMouseUpMask | NSLeftMouseDraggedMask; NSPoint point; float dx,dy; NSPoint location; point = [self convertPoint:[event locationInWindow] fromView:nil]; oldPoint = point; do { while (event && eventType != NSLeftMouseUp) { presentEvent = event; event = [NSApp nextEventMatchingMask: eventMask untilDate: [NSDate distantPast] inMode: NSEventTrackingRunLoopMode dequeue: YES]; eventType = [event type]; } point = [self convertPoint: [presentEvent locationInWindow] fromView: nil]; dx = point.x - oldPoint.x; dy = point.y - oldPoint.y; [self scrollRectToVisible:frame];
Add code here:
// // here move the dragged thing by: dx, dy // ....
Then finish the loop:
[self setNeedsDisplay:YES]; oldPoint = point; if (eventType == NSLeftMouseUp) { break; } event = [NSApp nextEventMatchingMask: eventMask untilDate: nil inMode: NSEventTrackingRunLoopMode dequeue: YES]; eventType = [event type]; } while (eventType != NSLeftMouseUp); [self setNeedsDisplay:YES]; }