cocoa – 在NSCollectionView中双击

cocoa – 在NSCollectionView中双击,第1张

概述我正在尝试让我的程序识别出使用NSCollectionView进行双击.我尝试过这个指南: http://www.springenwerk.com/2009/12/double-click-and-nscollectionview.html但是当我这样做时,没有任何反应,因为IconViewBox中的委托是null: h文件: @interface IconViewBox : NSBox{ 我正在尝试让我的程序识别出使用NSCollectionVIEw进行双击.我尝试过这个指南: http://www.springenwerk.com/2009/12/double-click-and-nscollectionview.html但是当我这样做时,没有任何反应,因为IconVIEwBox中的委托是null:

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中双击所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1002105.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存