Я бы рекомендовал подклассифицировать NSTextField и обработать события там. Как сказал trojanfoe, у него встроено управление мышью. Плюс к тому, что вы описываете как нечто, что вы можете использовать снова, в том же приложении или другом. Просто настройка класса на ваш пользовательский NSTextField позволит сэкономить время.
Это может выглядеть примерно так:
DCOHoverTextField.h
#import <Cocoa/Cocoa.h>
/** An `NSTextField` subclass that supports mouse entered/exited events.
*/
@interface DCOHoverTextField : NSTextField
@end
DCOHoverTextField.m
#import "DCOHoverTextField.h"
@interface DCOHoverTextField()
/* Holds the tracking area for the `NSTextField`. */
@property (strong) NSTrackingArea *trackingArea;
@end
@implementation DCOHoverTextField
- (void)updateTrackingAreas {
// Remove tracking area if we have one
if(self.trackingArea) {
[self removeTrackingArea:self.trackingArea];
}
// Call super
[super updateTrackingAreas];
// Create a new tracking area
self.trackingArea = [[NSTrackingArea alloc] initWithRect:self.bounds
options: NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways
owner:self
userInfo:nil];
// Add it
[self addTrackingArea:self.trackingArea];
}
- (void)mouseEntered:(NSEvent *)theEvent {
// TODO: Change text field into a plus sign.
}
- (void)mouseExited:(NSEvent *)theEvent {
// TODO: Change text field back into a regular text field.
}
@end
После создания подкласса, перейдите в Interface Builder, выберите ваш NSTextField и измените класс на созданный подкласс.
нет концепции мыши/курсора в iPhone или iPad, как ПК, как вы могли навести курсор мыши на iPad/iPhone? : P –
Похоже, что вы должны создавать пользовательский подкласс NSView, который содержит текстовое поле. 'NSView' имеет множество связанных с мышью методов событий. – trojanfoe
@Xman: Вопрос отмечен 'osx' и' cocoa', а не 'ios' и' cocoa-touch'. В OS X есть ** концепции мыши/курсора. – dreamlax