矢印キーで RubberBand を移動させる。これは簡単。
まず NSView の #acceptsFirstResponder をオーバライドする。
- (BOOL)acceptsFirstResponder
{
return YES;
}
後は #keyDown: を実装するだけ。前回導入した Undo 向けの処理も加えてある。
- (void)keyDown:(NSEvent*)theEvent
{
NSUndoManager* undoManager = [self undoManager];
[[undoManager prepareWithInvocationTarget:self]
setRubberBandFrame:_rect];
NSRect rect = _rect;
switch ([theEvent keyCode]) {
case 123:
// left
rect.origin.x += -1.0;
[undoManager setActionName:@"Moved left"];
break;
case 124:
// right
rect.origin.x += +1.0;
[undoManager setActionName:@"Moved right"];
break;
case 125:
// down
rect.origin.y += +1.0;
[undoManager setActionName:@"Moved down"];
break;
case 126:
// up
rect.origin.y += -1.0;
[undoManager setActionName:@"Moved up"];
break;
default:
break;
}
[self setRubberBandFrame:rect];
}