我在collectionview中顯示了一些圖像。現在我想選擇圖像並按空格按鈕。如果我按空格按鈕,圖像應該快速查看在一個單獨的窗口。任何想法?如何在應用程序內部使用SpaceBar按鈕來調用快速查看
2
A
回答
4
在你看來,做到這一點:
- (void)keyDown:(NSEvent *)event
{
unichar firstChar = 0;
if ([[event charactersIgnoringModifiers] length] > 0)
firstChar = [[event charactersIgnoringModifiers] characterAtIndex:0];
if (firstChar == ' ')
{
if ([QLPreviewPanel sharedPreviewPanelExists]
&& [[QLPreviewPanel sharedPreviewPanel] isVisible])
{
[[QLPreviewPanel sharedPreviewPanel] orderOut:nil];
}
else
{
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil];
[[NSApp mainWindow] makeKeyWindow];
}
}
else if (firstChar == NSRightArrowFunctionKey)
{
if ([QLPreviewPanel sharedPreviewPanelExists]
&& [[QLPreviewPanel sharedPreviewPanel] isVisible])
{
[[QLPreviewPanel sharedPreviewPanel] selectNextItem];
return;
}
}
else if (firstChar == NSLeftArrowFunctionKey)
{
if ([QLPreviewPanel sharedPreviewPanelExists]
&& [[QLPreviewPanel sharedPreviewPanel] isVisible])
{
[[QLPreviewPanel sharedPreviewPanel] selectPreviousItem];
return;
}
}
else
[super keyDown:event];
}
然後,我做這在我的應用程序的委託(AppDelegate.m):
- (BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel
{
//note that this methods indeed gets called because NSApp's
//delegate is in the responder chain.
return YES;
}
- (void)beginPreviewPanelControl:(QLPreviewPanel *)panel
{
previewPanel = panel; //set an ivar
[panel setDataSource:self];
}
- (void)endPreviewPanelControl:(QLPreviewPanel *)panel
{
previewPanel = nil;
}
- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel
{
//return a number of your choice (depends on your own app)
}
- (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel
previewItemAtIndex:(NSInteger)index
{
//return an object of your choice (depends on your app)
}
- (void)handleCurrentFileItemsSelectionChange:(NSNotification *)note
{
[previewPanel reloadData]; //referring to the ivar
}
1
我終於得到了。我剛剛更換imageViewes並把NSButton和設置好的spacebutton作爲keyequivalent作爲
- (BOOL)isOneOfMyKeyEquivs:(NSString *)keyChar
{
if (([keyChar isEqualToString:@" "])||([keyChar isEqualToString:@"\r"])) {
return YES;
} else {
return NO;
}
}
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
{
//NSLog(@"OK");
NSString* keyChar = [theEvent characters];
if ([self isOneOfMyKeyEquivs:keyChar])
{
[[self cell] setKeyEquivalent:keyChar];
}
return [super performKeyEquivalent:theEvent];
return NO;
}
,並進行按鈕操作。
+0
您應該標記@ 7cows的答案,因爲這是你的問題的確切解決方案。 –
相關問題
- 1. 使用Google的快速按鈕後Phonegap應用程序崩潰
- 2. 如何使用集合視圖按鈕來選擇快速查看控制器
- 3. 在快速應用程序內部製作幾個應用程序
- 4. 將數據從iOS應用程序傳輸到快速查看應用程序
- 5. 節點快速應用程序使用WebStorm調用來自單獨客戶端應用程序的調用
- 6. IIS快速部署應用程序
- 7. 如何在Mono Android應用程序中創建速率應用程序按鈕
- 8. 如何使iPhone應用程序快速填充內存
- 9. 使用主類中的按鈕單擊來調用內部類。 Java小程序
- 10. 如何從iPhone內部調用iPhone應用程序調用應用程序
- 11. 在fs.readFile中使用通配符/ glob/minimatch(內部快速應用程序)
- 12. 如何禁用fancybox快速查看magento
- 13. java快速應用程序
- 14. 如何使用Mono應用程序查看調試消息?
- 15. 日曆在應用程序內查看
- 16. 使用Reactjs創建快速天氣小部件應用程序
- 17. 如何在內部調用快速導出方法?
- 18. 如何使用Mocha測試集羣快速應用程序?
- 19. 如何使轉動部件內快速排序通用?
- 20. Android:從主應用程序調用的應用程序內部按下錯誤
- 21. 使用onClick按鈕查看
- 22. 創建快速查看使用jQuery
- 23. 如何從快速應用程序中刪除調試?
- 24. BigCommerce,如何添加自定義快速查看按鈕
- 25. 使用按鈕快速切換語句
- 26. 如何在應用程序內部啓動應用程序
- 27. 如何在iPhone應用程序中支持快速應用程序切換
- 28. 如何查看我的應用程序用戶來自哪裏?
- 29. 怎麼能允許應用程序調用我的按鈕來打開外部應用程序
- 30. 如何使用按鈕來控制另一個查看
這些委託方法可以更好地在窗口控制器或(如果有的話)文檔類中實現,而不是在應用程序委託中實現。例如,如果您打開「首選項」,QL面板將保持不變。 –
是NSCollectionView,關鍵事件可支持嗎? – user23790
@muruganandham如果它還沒有,你必須通過重寫'receivingFirstResonder:'和'makeFirstResponder:'等方法來創建子類。請參閱此處:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW2 – 7cows