2008年 8月1日
封装不封装,这是个问题。
今天我在看Cocoa开发者邮件列表的时候,看到一个帖子,求助如何在两个View之间互相通信的问题。做Windows程序员的时间长的我都不好意思说了,我意识到,这个问题在我刚刚接触到Mac上的Objective-C时也遇到过。
我现在可以提出这个问题的简化版:“我有一个对话框,获取了一些用户输入的数据。我现在需要从我那个对话框中把这个数据提取出来以供主窗口使用。如何才能从主窗口获取到对话框里的数据呢?”
2008年 4月24日
Cocoachina介绍Core Animation相关的内容也蛮久的了,这次为大家奉献一个简单点的小程序,但是相信你一定用得着:在程序启动时,使用窗口淡入特效将窗口显示出来;在程序关闭或者窗口关闭时,使用窗口淡出效果将窗口隐藏。
当然,使用这个例子的特效的前提是你的程序是专门为Leopard开发的,如果想在Tiger实现,可能要麻烦点,因为例子中我们使用Core Animation去实现这个特效。
由于这个例子非常简单,而且比较实用,很适合初学者阅读,看看怎么做的然后在你自己的程序中加入这种很酷的效果吧。
2008年 4月11日
在Mac OS中,点击窗口左上方的x,窗口将会关闭。如果你希望通过点击dock上的图标将窗口重新打开,你可以用如下方法做。
2008年 4月10日
我们上次演示的程序在关掉了应用程序的窗口之后,应用程序并没有真正的退出,现在我们就来完成这个任务。
在Mac,Windows或者 Linux平台上,所有的GUI程序都可以称作消息驱动的,就是说整个应用程序就是在处理消息的循环中进行的,用户的操作或者系统发送的一些通知都会被送 到应用程序的消息处理循环中,比如用户通过键盘输入,用鼠标点击窗口等等,有些消息会直接派发给应用程序的对象,比如鼠标按下(MouseDown)的消 息就会直接被送给鼠标按下的那个窗口或者试图,但是有些消息会被系统首先解释,然后在生成其他的消息,比如用户用鼠标单击窗口Frame上的关闭按钮,这 个时候MouseDown事件并没有被送给应用程序的内部对象,而是在应用程序的消息循环中被解释成了窗口将要关闭的消息。
2008年 4月10日
作者:Cocoachina特约作者Younker
这次主要讲解一下如何通过编写代码的方式来实现一个窗口程序, 当然这个程序十分的简单, 不过它演示了一些我们应该了解的东西,因此应该可以更好的帮助我们了解XCode和Interface Builder为我们的开发工作做了哪些工作。
大部分讲解Cocoa编程的书都会用到Xcode和Interface Builder,这两个工具的结合是开发Cocoa应用程序的最佳选择, 但是当中往往隐藏了许多细节的东西,为了对Cocoa的运作方式有更好的了解,我决定用代码来实现一些Interface Builder中Nib文件实现的部分功能,以此来研究Cocoa的运作方式。
2008年 4月1日
今天介绍一些比较有用的源代码,你既可以把它们做为例子学习,也可以直接在你的项目里使用。
这些例子包括一个Core Animation文档中提及的动画菜单,一个高级点的Core Animation例子,一个Http服务器的例子以及一个如何设置“偏好设置”窗口的例子。希望对大家有用。
2008年 3月25日
Cocoa提供了一系列动画形式的窗口缩放特效,你也许经常能够看到他们,比如在Pages里的检查器,或是一些应用程序的系统预置中,在你选择不同选项的时候,你就会看到窗口以动画的形式自动改变大小。如何实现这种效果呢?请阅读本文。

2008年 3月25日
NSPanel这种窗口形式有一个很讨厌的地方,在其他程序激活的时候,自身就会隐藏。如何关掉这种隐藏效果呢?
2008年 3月25日
在Interface Builder中默认设置的NSPanel会自动截获窗口的托管事件响应,你可以拖拽窗口的其他部位对窗口进行移动,可是这样一来,你自定义的托管操作就无法响应了。
其实这是Interface Builder默认设置的问题,在Interface Builder设置里,只要确保”Utility window”和”Non Activating Panel“都是选中的,就可以保证NSPanel对消息的正确响应。这一设置对Leopard的HUD类型窗口同样有效。
2008年 3月25日
有时候你发现打开的Sheet窗口无法关闭,看看下面的技巧:
2008年 3月25日
![]()
当你对一个窗口使用setFrame:时,你需要把标题栏的高度也算进去。从前标题条的高度是16点,在Aqua里,是22个点。由于这个高度不固定,所以你最好这样计算:
2008年 3月25日
2008年 3月25日
本文介绍通过调用NSOpenPanel打开文件选择对话框的方法 。