Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使Cocoa应用程序弹出一个小部件而不是一个窗口_Cocoa_Macos_Ikpicturetaker - Fatal编程技术网

使Cocoa应用程序弹出一个小部件而不是一个窗口

使Cocoa应用程序弹出一个小部件而不是一个窗口,cocoa,macos,ikpicturetaker,Cocoa,Macos,Ikpicturetaker,我从未使用XCode和Cocoa制作过应用程序,但我认为应遵循以下说明: 我可以很容易地制作一个应用程序,弹出一个窗口,让你按下一个按钮来打开IKPictureTaker,但这并不是我想要的。我希望我的应用程序能自动启动PictureTaker。我假设要做到这一点,我必须完全放弃interface builder,以编程方式完成整个过程,但我不知道什么调用会告诉Cocoa应用程序在启动时使用这个类或方法。这将在哪里以编程方式完成?我正试图在一个将在OSX中运行的Cocoa应用程序中完成这一切

我从未使用XCode和Cocoa制作过应用程序,但我认为应遵循以下说明:

我可以很容易地制作一个应用程序,弹出一个窗口,让你按下一个按钮来打开IKPictureTaker,但这并不是我想要的。我希望我的应用程序能自动启动PictureTaker。我假设要做到这一点,我必须完全放弃interface builder,以编程方式完成整个过程,但我不知道什么调用会告诉Cocoa应用程序在启动时使用这个类或方法。这将在哪里以编程方式完成?我正试图在一个将在OSX中运行的Cocoa应用程序中完成这一切


您需要使用beginPictureTakerWithDelegate:DiEndSelector:contextInfo:method,它将为您提供一个独立的pictureTaker窗口

IKPictureTaker *sharedPictureTaker = [IKPictureTaker pictureTaker];

[sharedPictureTaker setValue:[NSNumber numberWithBool:YES] forKey:IKPictureTakerShowEffectsKey];

[sharedPictureTaker beginPictureTakerWithDelegate:self didEndSelector:@selector(pictureTakerDidEnd:returnCode:contextInfo:) contextInfo:nil];

如果你把它放在某个地方,比如在你的应用程序代理的applicationdFinishLaunching:方法中,你会得到@startup的picture taker窗口。

如果你想要一个更定制的解决方案,你可以查看QuicktimeKit。这不像上面贴的三行邮轮那么容易,但相对来说,它是没有痛苦的。您将在拍照窗口的外观上有更多的灵活性,能够从任意数量的输入中进行选择,能够添加您自己的过滤器,等等。值得一看


我对IKPictureTaker不太熟悉。如果它做了一些我不认可的事情,请告诉我。

在Xcode/Cocoa中自动实例化类的方法是,奇怪的是,通过Interface Builder(IB)。在IB中打开MainMenu.xib,确保可以看到文档窗口(菜单窗口>>文档)。现在,在库中展开Cocoa>>对象和控制器>>控制器。您将看到许多控制器,其中有一个蓝色立方体。将此蓝色立方体拖动到MainMenu.xib文档窗口。您将看到该文件的所有者和字体管理器使用与其徽标相同的蓝色立方体。现在,选择您的蓝色立方体,并在Inspector中选择Identity面板(蓝色圆圈上的字母i)。将该类设置为之前在Xcode中创建的类,并保存MainMenu.xib。 运行程序时,类将自动实例化。开始调用其他方法或实例化其他对象的起点是

- (void)awakeFromNib
{
    NSLog(@"%@ I'm alive!", [self class]);
}

非常感谢您的回复。我只是还是有点困惑。在哪里访问应用程序委托?如果我在XCode中有一个空白的Cocoa项目,我似乎没有访问NSApplication的权限,我需要创建委托吗?或者隐藏在某个地方?从头开始,您可以通过新建项目->Cocoa应用程序来完成。然后查看自动创建的ApplicationLegate类。否则,您只需通过从应用程序图标拖动命令将IB中的自定义类链接到它。