我想知道如何将图像设置为UIBarButtonItem,然后在创建UIBarButtonItem时使用InitWithImage将其添加到UIToolbar.
我正在执行以下操作,但它会创建一个空白空白,其中图像应位于UIToolbar上
UIImage *image = [UIImage imageNamed:@"6.png"];
UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(pp:)];
Run Code Online (Sandbox Code Playgroud)
谢谢!
我试图从Windows桌面和资源管理器Windows获取所选文件的列表.要求是我应该能够从活动资源管理器窗口或桌面检索当前选择.
在完成在线资源后,我设法将以下代码放在一起,但它没有提供桌面上所选项目的列表.
ArrayList selected = new ArrayList();
var shell = new Shell32.Shell();
IntPtr handle = IntPtr.Zero;
handle = GetForegroundWindow();
int intHandle = handle.ToInt32();
//For each explorer
foreach (InternetExplorer window in new ShellWindowsClass())
{
if (window.HWND == (int)handle)
{
Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
foreach (Shell32.FolderItem item in items)
{
selected.Add(item.Path);
}
}
}
Run Code Online (Sandbox Code Playgroud)
除此之外,我尝试了以下内容,但它只是在所有打开的资源管理器窗口中提供所有选定元素的列表,而忽略了桌面.
string filename; = Path.GetFileNameWithoutExtension(window.FullName).ToLower();
if (filename.ToLowerInvariant() == "explorer")
{
Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
foreach (Shell32.FolderItem item in items)
{
//MessageBox.Show(item.Path.ToString());
selected.Add(item.Path);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我总是最终得到一个来自资源管理器窗口的列表,即使没有打开资源管理器窗口也没有结果.目前的技术似乎完全忽略了桌面.
如果有人可以帮助我从当前活动的窗口/桌面获取所选文件的列表,我将非常感激.
谢谢.
我已经为 iOS 应用程序实现了一个共享扩展。该扩展程序可成功处理图像和视频。
现在我正在寻找一种方法来使扩展适用于更多文件类型,例如 PDF、电子表格(Excel、Pages 等)、文档(MS Word、其他类似类型)、演示文稿(Powerpoint、Pages 等) 、简单的文本文件(Txt、xml、.c、.h 等)和网页 URL。
问题是我希望能够使用以下规则激活扩展:
1. 图片和视频一共可以选择25个项目,最多25个图片和/或最多5个视频。所以我们可以只有 1-25 个图像或 1-5 个视频或 20 个图像和 5 个视频或任何组合,只要总项目数保持小于或等于 25 且视频保持小于或等于 5
2. 如果选择了Image/s 或Video/s,则不能选择其他类型。
3. PDF 最多 1 个,未选择其他类型。
4. 电子表格最多 5 个,未选择其他类型。
我一直试图通过对 NSExtensionActivationRule 使用自定义 SUBQUERY 来实现这一点,但一直无法弄清楚。
我浏览了许多堆栈溢出帖子,还有一些不是关于堆栈溢出的帖子,也通过 Apple 文档,除了简单的示例之外没有任何其他内容,但我还没有能够成功编写符合我要求的 SUBQUERY。
例如,我尝试编写以下 SUBQUERY,它应该仅在选择图像时激活扩展,并且专门忽略 PDF、演示文稿、音频、电影和文本文件。但是扩展被激活用于文本和 PDF,也可能用于其他被忽略的项目,尽管我没有专门检查每一个。
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
(
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.fax"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg"
|| ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.jpeg-2000"
|| ANY …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个在状态栏中具有 NSStatusItem 图标的 Mac 应用程序。状态栏图标应支持文件拖放,并且在单击时还必须显示菜单。
问题是我已经设法分别实现了这两个功能,并且很难将它们合并在一起。
我能够使用此链接创建状态栏应用程序:
http://cocoatutorial.grapewave.com/2010/01/creating-a-status-bar-application/
然后我能够使用以下链接在状态栏图标上实现拖放功能
我面临的问题如下,为了进行拖放,我必须创建另一个视图,然后将该视图分配给 NSStatusItem,如下所示:
NSStatusItem *statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
ViewWithDragFunctionality* viewWithDrag = [[ViewWithDragFunctionality alloc] initWithFrame:NSMakeRect(0, 0, 24, 24)];
[statusItem.view addSubview:viewWithDrag];
Run Code Online (Sandbox Code Playgroud)
由于这只是一个视图,它显然不像 NSStatusItem 的默认视图那样运行,并且不支持鼠标交互或其他任何东西。通过向 ViewWithDragFunctionality.m 添加以下函数,我设法找到了解决方法
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"Status Bar Icon Clicked");
}
Run Code Online (Sandbox Code Playgroud)
只要单击状态栏图标并且还检测到文件拖放,就会调用该函数。
但是现在我被困在弄清楚如何在单击状态栏图标时显示菜单。
任何帮助都感激不尽。我正在为此寻找解决方案,如果我先找到一些东西,我会在这里发布:)
问候
舒迈斯
c# ×1
ios ×1
iphone ×1
macos ×1
nsmenu ×1
nsmenuitem ×1
nsstatusitem ×1
shell32 ×1
visual-c++ ×1
windows ×1