
h文件:
@interface IconVIEwBox : NSBox{ IBOutlet ID delegate;}@end m文件:
@implementation IconVIEwBox-(voID)mouseDown:(NSEvent *)theEvent { [super mouseDown:theEvent]; // check for click count above one,which we assume means it's a double click if([theEvent clickCount] > 1) { NSLog(@"double click!"); if(delegate && [delegate respondsToSelector:@selector(doubleClick:)]) { NSLog(@"Runs through here"); [delegate performSelector:@selector(doubleClick:) withObject:self]; } }} 第二个NSLog永远不会被打印,因为委托是空的.我已经连接了我的nib文件中的所有内容并按照说明 *** 作.有谁知道为什么或替代为什么这样做?
解决方法 您可以通过继承集合项的视图来捕获集合视图项中的多次单击.>子类NSVIEw并添加一个mouseDown:方法来检测多次点击
>将nib中的NSCollectionItem视图从NSVIEw更改为MyCollectionVIEw
>在关联的NSWindowController中实现collectionItemVIEwDoubleClick:
这可以通过让NSVIEw子类检测到双击并传递响应者链来实现.调用响应器链中实现collectionItemVIEwDoubleClick:的第一个对象.
通常,您应该在关联的NSWindowController中实现collectionItemVIEwDoubleClick:,但它可以位于响应程序链中的任何对象中.
@interface MyCollectionVIEw : NSVIEw/** Capture double-clicks and pass up responder chain */-(voID)mouseDown:(NSEvent *)theEvent;@end@implementation MyCollectionVIEw-(voID)mouseDown:(NSEvent *)theEvent{ [super mouseDown:theEvent]; if (theEvent.clickCount > 1) { [NSApplication.sharedApplication sendAction:@selector(collectionItemVIEwDoubleClick:) to:nil from:self]; }}@end 总结 以上是内存溢出为你收集整理的cocoa – 在NSCollectionView中双击全部内容,希望文章能够帮你解决cocoa – 在NSCollectionView中双击所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)