我正在编写QTMovieView的功能。我想双击QTMovieView使其退出全屏模式。 QTMovieView由AppController.m控制,我在AppController中编写exit fullscreenmode函数。因为我想捕获双击QTMovieView的事件。所以我必须覆盖mouseDown事件。覆盖功能写入" QTMovieView + TFOverrideDrag.h"
QTMovieView + TFOverrideDrag.m
#import "QTMovieView+TFOverrideDrag.h"
#include "AppController.h"
@implementation QTMovieView (TFOverrideDrag)
- (void)mouseDown:(NSEvent *)theEvent
{
[self.superview becomeFirstResponder];
NSInteger clickCount = [theEvent clickCount];
if (2 == clickCount) {
[AppController exitFullScreen:self];
NSLog(@"SS");
}
NSLog(@"MDown");
}
并且此功能成功覆盖。但exitFullScreen函数失败。我该怎么解决?谢谢
更新
AppController.h
#import <Cocoa/Cocoa.h>
#import <Carbon/Carbon.h>
#import <QTKit/QTKit.h>
@interface AppController : NSDocument
{
QTMovie *qtmovie;
QTMovieView *_movieView;
}
@property (assign) IBOutlet QTMovieView *movieView;
- (IBAction)toggleFullscreen:(id)sender;
+(IBAction)exitFullScreen:(id)sender;
@end
AppController.m
#import "AppController.h"
@implementation AppController
@synthesize movieView=_movieView;
- (IBAction)toggleFullscreen:(id)sender
{
_movieView=_movieView;
NSDictionary *fullScreenOptions = [[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]forKey:NSFullScreenModeSetting] retain];
[_movieView enterFullScreenMode:[[NSScreen mainScreen] retain] withOptions:fullScreenOptions];
}
+(void)exitFullScreen:(id)sender
{
_movieView=_movieView;
NSLog(@"exitFullscreen");
NSDictionary *fullScreenOptions = [[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]forKey:NSFullScreenModeSetting] retain];
[_movieView exitFullScreenModeWithOptions:fullScreenOptions];
}
@end
答案 0 :(得分:0)
您确定AppController
声明类似+(void)exitFullScreen:
的类方法吗?如果没有,那么您将需要将实例方法更改为类方法(使用+
而不是-
)或子类QTMovieView
类并传递{{{}的实例1}}到实例。
答案 1 :(得分:0)
- (void)mouseDown:(NSEvent *)theEvent
{
[self.superview becomeFirstResponder];
NSInteger clickCount = [theEvent clickCount];
if (2 == clickCount) {
NSDictionary *fullScreenOptions = [[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]forKey:NSFullScreenModeSetting] retain];
[super enterFullScreenMode:[[NSScreen mainScreen] retain] withOptions:fullScreenOptions];
NSLog(@"SS");
}
NSLog(@"MDown");
}
关键是“超级”。