好文档 - 专业文书写作范文服务资料分享网站

iphone开发秘籍

天下 分享 时间: 加入收藏 我要投稿 点赞

作为一种可与因特网连接的设备,iPhone非常适用于订阅基于Web的服务。苹果公司通过其在各类网络计算服务方面的坚实基础以及支持技术丰富了这种平台。iPhoneSDK可处理套接字、密码密钥链、SQL访问、XML处理等。第10章将探讨常用的网络计算技术,并提供能简化日常工作的方法。

第11章:CoverFlow编程

虽然CoverFlow并未正式包含在iPhoneSDK中,但它仍然提供了iPhone体验中最优秀的特性之一。使用CoverFlow,能为用户提供极为出色的视觉选择体验,这一点令标准的滚动列表望尘莫及。第11章介绍CoverFlow并展示如何在应用程序中使用它。

4.1通过警告直接与用户对话

可以通过UIActionSheet和UIAlertView对象与用户对话。它们通过弹出或在其他视图上方滚动来发送消息。这些轻量级类向应用程序中添加双向对话。警告直观地与用户“对话”并且可以提示用户回答。应用程序在屏幕上显示警告,获取用户确认,然后关闭警告继续进行其他任务。

如果你认为警告只不过是附带OK按钮的消息(如图4-1所示),那么这样的结论值得反思。UIAlertSheet对象提供了丰富的功能(假设苹果公司继续让你访问这些丰富的功能)。借助警告表,你可以实际构建菜单、文本输入、查询以及更多内容。遗憾的是,此行为多半都被归类为文档中未记录或几乎未记录的类别。在本章的秘诀中,你将了解如何创建可以在自己程序中使用的各种实用的警告。

本章中涉及的大部分功能已从正式的SDK中删除,但在公共框架中仍然存在。由于本章更多地依赖于“非正式”调用,因此应该找到可靠性和功能之间的最佳平衡点。苹果公司不鼓励开发人员使用私有例程,因为开发人员会随意更改这些例程。但其本质与MacOSX相同。如果你知道如何在公共架构中使用私有例程的方法,则可以使用它们。在应用程序中访问私有框架则是错误的做法。

说明在早期版本的iPhone固件中,UIActionSheet和UIAlertView实际上由相同的UIAlertSheet类实现。该类不仅提供弹出警告,而且还提供菜单功能。然后苹果公司将警告表替换为UIModalView,并对来自该基类的这些新对象进行子类化。之后,苹

果公司删除了UIModalView,在新版本的SDK中,UIActionSheet和UIAlertView不再由此类派生。(它们都来自于UIView。)与其前身一样,它们在行为方面仍然属于同类,并且使用相似的底层技术在屏幕上呈现自己。4.1.1记录结果

由于printf非常简单,因此大部分秘诀都使用printf以可以查看的格式输出它们的结果。在最初的SDKBeta版本期间,printf提供了检查内部程序数据的最可靠的方法。现在,在最新的iPhoneSDK版本中,NSLog()得到了完全实现,并且非常稳定。此外,下面给出了几个实用的技巧。

1.重定向stderr

标准的freopen()函数将stderr输出重定向到你选择的日志文件,为其指定一个本地路径。此处,logPath是一个标准的NSString(如@\),它已被转换为本地文件系统表示。完成此调用之后,所有stderr结果(包括NSLog)将直接进入你的日志文件。当你的程序运行时,使用\(写)而不是使用\(附加)来重新启动日志:

2.构建自定义日志函数

构建你自己的日志函数,可以添加除标准NSLog之外的功能。下面是模拟NSLog功能的一个基本日志函数。通过此函数,可以方便地生成警告通知或文本视图更新,而不必输出到stderr:

4.1.2构建警告

若要创建警告表,请分配一个UIAlertView对象。通过初始化为其分配一个标题、一个按钮数组和若干其他选项。该标题是一个NSString,按钮数组包含多个NSString,其中每个字符串表示一个按钮。代码清单4-1创建了一个非常简单的警告,如图4-1所示。

使用警告时,通常空间非常珍贵。将所有按钮放在一行上可以最大程度地减小警告高度,并且这也是默认表示。当定义更多按钮时,它们会一个挨一个地添加到该行中。因此,任何时候都要将添加的按钮数量限制为不超过3个或4个。按钮越少,效果越好,最好只有一两个。

UIAlertView对象没有提供可视的“默认”按钮突出显示。在iPhone上下文中,按钮突出显示不但不能提供帮助,而且还容易造成混淆。(例如,用户应该按浅色按钮还是深色按钮?)没有办法使界面符合用户期望,因为此表示不明确。因此,与OSX不同的是,苹果公司在较新的iPhone固件中删除了突出显示。

说明Cancel按钮出现在菜单的底部,并且位于弹出警告的左侧。

代码清单4-1创建基本警告

图4-1使用UIAlertView类构建简单的弹出警告

除非万不得已,否则应将委托设置为UIViewController主对象。委托实现了UIAlertView-Delegate协议。UIAlertView实例至少需要此委托支持才能处理按钮轻击。

通过委托方法,你可以自定义当按下不同的按钮时的响应。实际上,如果仅需要通过一个OK按钮抛出一些消息,则可以忽略此委托支持。

用户看到警告并与之交互之后,他们会发起以下委托方法调用:alertView:

clickedButtonAtIndex:。通过此调用,你可以确定按下了哪个按钮并且恢复在此表上设置的任何选项。按钮编号从零开始。

4.1.3显示警告

使用show方法通知警告显示在屏幕上(即[myAlertshow])。显示时,警告采用模态方式工作。即,它使其后的屏幕暗淡并阻止用户与应用程序交互。此模式交互将一直继续,直到用户按钮轻击(通常是选择OK或Cancel)确认该警告为止。

说明创建警告表之后,你可以通过更新其message来自定义警告。该可选文本位于警告标题下方,警告按钮下方。其他可自定义的属性包括title、delegate和visible。

4.2秘诀:创建多行按钮显示

默认情况下,iPhone在一行上显示其按钮。图4-2在左侧显示了这个标准的外观。你可以使用文档中未记录的调用覆盖一行显示。此调用创建一个多行警告,如右侧所示。使用setNumberOfRows:构建单行按钮警告,如代码清单4-2所示。其中提供一个参数和一个整数,用于指定所请求的行数。

图4-2通过文档中未记录的UIKit调用,你可以选择是将按钮放置在一行还是一列说明

有关在程序中使用文档中未记录的调用和特性的详细讨论,请参见第1章。

早期版本iPhone软件的工作方式恰好相反。最初的标准采用多行模式,并且必须使用setNumberOfRows:让电话的按钮移动到单行上。

秘诀4-1创建的示例在屏幕中央弹出其警告,其周围的屏幕将变暗。由于默认情况下它采用模态方式运行,因此在用户轻击OK按钮之前,任何事情都处于等待状态。轻击之后,警告关闭,然后将控制传递给modalView:clickedButtonAtIndex:委托方法。该方法正如此处所定义的,除了打印轻击按钮的编号之外,什么也没有做。

说明你可以使用setDimsBackground:NO禁止背景变暗淡。这是另一个文档中未记录的调用。我建议不要将它用作常规用途。它违背了苹果公司的人机界面标准,并且可能使用户弄不清楚是否可以在警告生存期内轻击背景。

秘诀4-1创建带单行按钮的UIAlertView

iphone开发秘籍

作为一种可与因特网连接的设备,iPhone非常适用于订阅基于Web的服务。苹果公司通过其在各类网络计算服务方面的坚实基础以及支持技术丰富了这种平台。iPhoneSDK可处理套接字、密码密钥链、SQL访问、XML处理等。第10章将探讨常用的网络计算技术,并提供能简化日常工作的方法。第11章:CoverFlow编程虽然CoverFlow并未正式包含在iPhoneSDK
推荐度:
点击下载文档文档为doc格式
6uvwj9xedm7b8vd53zk1
领取福利

微信扫码领取福利

微信扫码分享