今天接到个需求,要求程序能够检测网络可用性,并在没有网络可用的时候能够弹出对话框,并允许用户点击按钮打开网络设置。
这个问题,我首先想到的就是用一个方法检测网络可用性,然后用UIApplication的openURL方法打开某个特殊URL,就可以进入设置了。于是,我迅速地建了个测试项目,写了个简单的实现,如下:
今天接到个需求,要求程序能够检测网络可用性,并在没有网络可用的时候能够弹出对话框,并允许用户点击按钮打开网络设置。
这个问题,我首先想到的就是用一个方法检测网络可用性,然后用UIApplication的openURL方法打开某个特殊URL,就可以进入设置了。于是,我迅速地建了个测试项目,写了个简单的实现,如下:
腾讯一直被大家吐槽山寨别人,这次我决定山寨一下腾讯,对象就是QQ for Mac的头像选择菜单。下面是原版的头像选择菜单:
![]()
因为没有考虑程序在低速网络下的表现,昨天在测试公司的一个程序的时候出了点丑,于是痛定思痛,要解决模拟低速网络连接的问题。遗憾的是iOS Simulator并没有提供模拟低速网络的功能。
经过一番STFW之后,发现原来苹果从Xcode 4.1开始提供了一款叫做“Network Link Connector”的工具。但是如今我已经升级到Xcode 4.3.2,用SpotLight搜索了一番之后也没有发现系统里已经安装了这样的一个工具。
又经过一番搜索,我发现原来“Network Link Connector”是一个prefPane程序,从Xcode 4.3开始已经不再默认包含在程序里了,而是需要从developer.apple.com/download上单独下载,它位于“Hardware IO Tools”的一个包中。
OS X程序,在执行后台任务的时候,有时需要通过跳动Dock图标来提示用户进行操作或某项操作已经执行完成。方法很简单,NSApplication有一个-requestUserAttention:的方法可以跳动Dock图标。
下面是实例代码:
1 2 3 4 5 6 7 8 | |
FYI: NSApp是一个指向当前运行的程序实例的全局变量,等同于调用:[NSApplication sharedApplication]。
示例代码已经上传到github,有兴趣的可以看看。不过记得在测试示例程序的时候,点击按钮后就让程序进入后台运行。5秒钟后就能看到效果了。
Growl是一个知名的第三方消息提示框架,几乎是Mac装机必备的软件。虽然从Growl 1.3开始,Growl变成了收费软件,但是它依然是Mac App Store收费榜名列前茅的软件。虽然从OS X 10.8 Mountain Lion开始,OS X将加入Notification Center的支持,但是现在距离OS X 10.8发布依然有一段时间,而且,OS X 10.8之前的Mac OS X要退出历史舞台还有很长的路。
我曾经撰写过关于Growl的文章,因此关于Growl.framework的基本使用的内容我在本文中不再赘述了,大家可以去回顾一下。基本上就是:
在iOS 5中已经有了自定义UIBarButtonItem背景的API。但是在iOS 4中,自定义BarButtonItem背景就复杂很多了。其中最典型也最容易实现的一种是方法是试用UIBarButtonItem的-initWithCustomView:方法,传递一个自定义UIButton对象进去。
在深入讨论自定义UIBarButtonItem,让我们来先解决自定义UIButton的一个问题:那就是Button的标题的长度是变化的,我们应该通过什么方法让背景图片适应标题长度的变化呢?
下面是解决方案: