本書介紹了如何利用iOS7進(jìn)行程序開發(fā)的已經(jīng)過檢驗的可信解決方案。作者將當(dāng)前最優(yōu)的實(shí)踐運(yùn)用到工作代碼中,將核心的概念轉(zhuǎn)換為讀者方便理解和應(yīng)用的具體方案,利用實(shí)例,充分展示了iOS開發(fā)中的“如何進(jìn)行”和“為什么這么做”兩個方面。
世界知名iOS開發(fā)專家詳細(xì)講解創(chuàng)建優(yōu)秀iOS移動應(yīng)用程序的技術(shù)細(xì)節(jié),系統(tǒng)闡釋如何高效開發(fā)iOS程序
用直觀的代碼演示當(dāng)前流行的編程技巧,為iOS開發(fā)者提供行之有效的解決方案
歡迎閱讀本書新版!
自蘋果公司發(fā)行iOS移動操作系統(tǒng)以來,iOS 7的變革是最為重大的。這本教程將會指導(dǎo)各位開發(fā)者針對這個新發(fā)布的優(yōu)秀操作系統(tǒng)來制作應(yīng)用程序。2013年的全球軟件開發(fā)者年會(Worldwide Developers Conference,WWDC)公布了一些新的特性和視覺范式,而本書這次修訂已經(jīng)將它們?nèi)己w在內(nèi)了,筆者將會向你演示如何將其融入自己的應(yīng)用程序里。
發(fā)行團(tuán)隊將這次修訂過的Cookbook材料分成兩本書來印刷,以控制每本書的篇幅。本書的英文書名叫作《The Core iOS Developer’s Cookbook》,講述了日常開發(fā)所需的關(guān)鍵知識,介紹了使用標(biāo)準(zhǔn)API與界面元件來創(chuàng)建iOS應(yīng)用程序時所需用到的類。同時,本書以“解決方案”的形式講解創(chuàng)建移動應(yīng)用程序時所需的圖像、觸摸及視圖等技術(shù)。
另外一本書的英文名叫作《Learning iOS Development: A Hands-on Guide to the Fundamentals of iOS Programming》,其中包含了一些入門知識,相當(dāng)于老版本Cookbook的前面幾章。該書適合想要從頭學(xué)習(xí)iOS 7基礎(chǔ)知識的開發(fā)者閱讀。《Learning iOS Development》講述了Objective-C編程語言、Xcode開發(fā)環(huán)境以及與調(diào)試和部署有關(guān)的內(nèi)容,你可以通過它學(xué)會如何使用蘋果公司的開發(fā)工具套件。
學(xué)習(xí)本書所需的材料和知識 想開發(fā)iOS應(yīng)用程序,肯定得有一臺測試應(yīng)用程序用的iOS設(shè)備,而且最好是一臺新款的iPhone或iPad。下面列出閱讀本書所需的材料和基礎(chǔ)知識:
蘋果公司的iOS SDK——你可以從蘋果公司的iOS Dev Center(http://developer.apple.com/ios)下載最新版的iOS SDK。如果打算在App Store上發(fā)售應(yīng)用程序,那么還必須成為付費(fèi)的iOS開發(fā)者。個人開發(fā)者每年需要付款99美元,企業(yè)開發(fā)者每年需要付款299美元。注冊成為付費(fèi)開發(fā)者之后,就會收到一份證書,開發(fā)者可以用這份證書來簽署應(yīng)用程序,并將其下載到iPhone、iPod touch或iPad中進(jìn)行測試與調(diào)試,此外,付費(fèi)開發(fā)者還可以提前獲得預(yù)覽版的iOS系統(tǒng)。未付費(fèi)的開發(fā)者可以在Mac系統(tǒng)的模擬器上測試軟件,但是不能將其部署到設(shè)備中,也不能將其提交到App Store。
運(yùn)行Mac OS X Mountain Lion(v 10.8)系統(tǒng)的新款Mac,如果裝的是Mac OS X Mavericks(v 10.9)系統(tǒng)就更好——你需要為軟件開發(fā)留出足夠的磁盤空間,而且應(yīng)該盡可能把Mac的RAM裝配得大一些。
iOS設(shè)備——盡管iOS SDK里的模擬器也能用來測試應(yīng)用程序,但是開發(fā)者仍然需要一臺iOS硬件設(shè)備,以便針對iOS平臺做開發(fā)。你可以把iOS設(shè)備與電腦相連,并把自己構(gòu)建的軟件裝上去。在開發(fā)真實(shí)的App Store程序時,應(yīng)該準(zhǔn)備數(shù)款硬件和固件各不相同的設(shè)備,以便在目標(biāo)用戶可能會用到的各種平臺上進(jìn)行測試。
因特網(wǎng)連接——連上網(wǎng)之后,就可以測試應(yīng)用程序在使用WiFi和使用移動數(shù)據(jù)網(wǎng)絡(luò)時的效果了。
熟悉Objective-C——要想編寫iPhone程序,需要了解Objective-C 2.0。這是一門基于ANSI C的語言,并且?guī)в忻嫦驅(qū)ο髷U(kuò)展,也就是說,你需要了解一點(diǎn)C語言的知識。如果原來用Java或C++寫過程序,而且又熟悉C語言,那么應(yīng)該能夠迅速適應(yīng)Objective-C。
學(xué)習(xí)Mac/iOS開發(fā)的路線圖 一本書不可能把各類讀者所需的全部知識都囊括其中。假如兩位作者把你所需的全部內(nèi)容都寫到這本書里,那它會重到根本拿不起來。實(shí)際上,想要開發(fā)Mac及iOS平臺上的程序,需要學(xué)習(xí)很多內(nèi)容。如果你剛處于起步階段,而且沒有寫過程序,那么首先應(yīng)該學(xué)習(xí)一門大學(xué)水平的C語言課程。大部分編程語言都以C語言為根基,對于想要成為開發(fā)者的人來說,自然也要從C語言學(xué)起。
學(xué)會C語言及編譯器(基礎(chǔ)的C語言課程會講到它)的用法之后,剩下的事情就簡單多了。此時可以直接跳到Objective-C語言,學(xué)習(xí)如何用它來編程,同時還可以學(xué)習(xí)Cocoa框架。圖1是一張流程圖,里面列出了培生教育出版集團(tuán)所出版的一些關(guān)鍵書籍,它們可以幫助你成為一名熟練的iOS開發(fā)者。
Erica Sadun,是數(shù)十本暢銷書的作者、合著者和供稿者,這些書涉及程序設(shè)計、數(shù)字視頻、數(shù)字?jǐn)z影、Web設(shè)計和其他技術(shù)主題。作為一名在iOS領(lǐng)域最負(fù)盛名的開發(fā)人員,她還開發(fā)了數(shù)十種iPhone自帶的應(yīng)用。Sadun擁有佐治亞理工學(xué)院計算機(jī)科學(xué)專業(yè)的博士學(xué)位。
Rich Wardwell,是Black Pixel的資深iOS及Mac開發(fā)者,在專業(yè)級服務(wù)器、桌面和移動領(lǐng)域有20多年軟件開發(fā)經(jīng)驗,并以主要開發(fā)者的身份參與制作了很多款A(yù)pple App Store上的優(yōu)秀iOS應(yīng)用程序,包括USA Today及Fox News。。
愛飛翔,資深軟件開發(fā)工程師,擅長Web開發(fā)、移動開發(fā)和游戲開發(fā),有10余年開發(fā)經(jīng)驗,曾主導(dǎo)和參與了多個手機(jī)游戲和手機(jī)軟件項目的開發(fā),經(jīng)驗十分豐富。業(yè)余愛好文學(xué)和歷史,有一定的文學(xué)造詣。翻譯并出版了《Android游戲開發(fā)實(shí)踐指南》、《測試驅(qū)動的iOS開發(fā)》、《HTML5 Canvas核心技術(shù):圖形、動畫與游戲開發(fā)》、《NoSQL精粹》和《JavaScript應(yīng)用開發(fā)實(shí)踐指南》等書。
譯者序
前 言
致 謝
第1章 手勢與觸摸 1
1.1 觸摸 1
1.1.1 觸摸操作所處的階段 2
1.1.2 UIResponder類中的觸摸事件響應(yīng)方法 3
1.1.3 對視圖的觸摸 4
1.1.4 多點(diǎn)觸摸 4
1.1.5 手勢識別器 5
1.2 解決方案:添加簡單的直接操縱界面 5
1.3 解決方案:添加拖動手勢識別器 7
1.4 解決方案:同時使用多個手勢識別器 9
1.5 解決方案:限制移動 14
1.6 解決方案:測試觸摸 15
1.7 解決方案:針對位圖的觸摸測試 17
1.8 解決方案:根據(jù)觸摸情況在屏幕上繪制內(nèi)容 19
1.9 解決方案:令繪制效果變得平滑 21
1.10 解決方案:啟用多點(diǎn)觸摸 24
1.11 解決方案:檢測圓圈手勢 27
1.12 解決方案:創(chuàng)建自定義手勢識別器 32
1.13 解決方案:把滾動視圖中的內(nèi)容拖曳到外面 34
1.14 解決方案:實(shí)時的觸摸反饋 37
1.14.1 啟用觸摸反饋效果 38
1.14.2 攔截并轉(zhuǎn)發(fā)觸摸事件 38
1.14.3 實(shí)現(xiàn)TOUCHkit的TOUCHkitView類 40
1.15 解決方案:向視圖中添加菜單 42
1.16 小結(jié) 43
第2章 構(gòu)建并使用控件 45
2.1 UIControl類 45
2.1.1 目標(biāo)-動作模式 46
2.1.2 控件的種類 46
2.1.3 控件事件 46
2.2 按鈕 48
2.3 Interface Builder中的按鈕 50
2.4 解決方案:構(gòu)建按鈕 51
2.4.1 多行按鈕文本 54
2.4.2 為按鈕添加動畫元件 54
2.4.3 為按鈕添加額外狀態(tài) 55
2.5 解決方案:使按鈕以動畫效果來響應(yīng)用戶 55
2.6 解決方案:為滑桿控件添加自定義的滑塊 57
2.6.1 定制UISlider控件 57
2.6.2 添加優(yōu)化代碼 58
2.7 解決方案:創(chuàng)建可以連續(xù)點(diǎn)擊兩次的分段選擇控件 61
2.7.1 實(shí)現(xiàn)第二次點(diǎn)擊時的反饋效果 62
2.7.2 控件及帶屬性的字符串 63
2.8 開關(guān)控件與步進(jìn)控件 64
2.9 解決方案:編寫UIControl的子類 65
2.9.1 創(chuàng)建控件 68
2.9.2 追蹤觸摸事件 68
2.9.3 派發(fā)控件事件 69
2.10 解決方案:構(gòu)建評分所用的Star Slider控件 69
2.11 解決方案:構(gòu)建觸摸轉(zhuǎn)盤控件 72
2.12 解決方案:創(chuàng)建拉曳控件 75
2.12.1 為控件添加提示效果 75
2.12.2 測試觸摸 77
2.13 解決方案:構(gòu)建自定義的鎖定控件 80
2.14 解決方案:圖片庫查看器 83
2.15 構(gòu)建工具欄 85
2.16 小結(jié) 88
第3章 提醒用戶 89
3.1 直接向用戶彈出警告視圖 89
3.1.1 構(gòu)建簡單的警告視圖 89
3.1.2 設(shè)置UIAlertView的委托 91
3.1.3 顯示UIAlertView 92
3.1.4 各種UIAlertView 92
3.2 解決方案:構(gòu)建支持塊的警告視圖 93
3.2.1 塊簡介 93
3.2.2 使用塊時避免保留循環(huán) 95
3.3 解決方案:將變長參數(shù)列表與UIAlertView結(jié)合起來使用 98
3.4 展示選項列表 99
3.4.1 滾動菜單 101
3.4.2 在動作表中顯示文本 101
3.5 將操作進(jìn)度告知用戶并提示其稍等片刻 102
3.5.1 使用UIActivity-IndicatorView 103
3.5.2 使用UIProgressView 103
3.6 解決方案:在屏幕上繪制模態(tài)的進(jìn)度指示器 104
3.7 解決方案:自制的模態(tài)警告視圖 106
3.8 解決方案:基本的popover 110
3.9 解決方案:本機(jī)通知 111
3.10 用網(wǎng)絡(luò)活動指示器提醒用戶 113
3.11 解決方案:播放簡單的提示音 114
3.11.1 System Sound 114
3.11.2 為使用系統(tǒng)框架而引入模塊 115
3.11.3 震動 115
3.11.4 警示音 116
3.11.5 延遲 117
3.11.6 釋放系統(tǒng)音 117
3.12 小結(jié) 117
第4章 編排視圖及其動畫效果 119
4.1 視圖層級 119
4.2 解決方案:用樹狀圖來描述視圖層級 121
4.3 解決方案:查詢子視圖 123
4.4 管理子視圖 125
4.4.1 添加子視圖 125
4.4.2 重排及刪除子視圖 125
4.4.3 UIView的回調(diào)方法 125
4.5 為視圖設(shè)定標(biāo)簽并查找視圖 126
4.6 解決方案:通過對象關(guān)聯(lián)機(jī)制為視圖設(shè)定名稱 127
4.7 視圖的幾何特征 129
4.7.1 框架 130
4.7.2 與CGRect有關(guān)的工具函數(shù) 130
4.7.3 CGPoint與CGSize 131
4.7.4 CGAffineTransform 132
4.7.5 坐標(biāo)系統(tǒng) 133
4.8 解決方案:操控視圖的框架 133
4.8.1 調(diào)整視圖的尺寸 134
4.8.2 CGRect與中心點(diǎn) 136
4.8.3 視圖的其他幾何特征 137
4.9 解決方案:獲取與坐標(biāo)變換有關(guān)的信息 141
4.9.1 獲取與變換有關(guān)的屬性 141
4.9.2 判斷兩個視圖是否相交 142
4.10 與顯示和交互有關(guān)的特征 147
4.11 UIView的動畫效果 148
4.12 解決方案:視圖的淡入與淡出 150
4.13 解決方案:交換兩個視圖的前后順序 151
4.14 解決方案:翻轉(zhuǎn)視圖 151
4.15 解決方案:采用Core Animation API來制作切換效果 153
4.16 解決方案:使視圖在出現(xiàn)之后回彈 155
4.17 解決方案:關(guān)鍵幀動畫 156
4.18 解決方案:UIImageView的動畫效果 157
4.19 小結(jié) 158
第5章 視圖的約束系統(tǒng) 160
5.1 什么是約束 161
5.2 約束系統(tǒng)所用的屬性 161
5.3 約束系統(tǒng)的運(yùn)作規(guī)律 163
5.4 約束規(guī)則與框架屬性 165
5.4.1 固有內(nèi)容的尺寸 165
5.4.2 對齊矩形 166
5.5 創(chuàng)建約束規(guī)則 167
5.5.1 基本約束規(guī)則聲明 167
5.5.2 用可視化格式字符串聲明約束規(guī)則 168
5.5.3 變量綁定 169
5.6 格式字符串 169
5.6.1 方向 169
5.6.2 連接 171
5.7 謂詞 173
5.7.1 指標(biāo) 173
5.7.2 描述兩個視圖關(guān)系的謂詞 174
5.7.3 優(yōu)先級 174
5.8 格式字符串總結(jié) 174
5.9 用格式字符串將視圖對齊并靈活調(diào)整其尺寸 176
5.10 處理約束規(guī)則的流程 176
5.11 管理約束規(guī)則 177
5.12 解決方案:實(shí)現(xiàn)約束規(guī)則之間的對比 178
5.13 解決方案:創(chuàng)建尺寸固定且受規(guī)則約束的視圖 181
5.13.1 禁用translatesAutoresizing-MaskIntoConstraints 181
5.13.2 令視圖出現(xiàn)在上級視圖范圍內(nèi) 182
5.13.3 限定視圖的尺寸 183
5.13.4 把前面各節(jié)內(nèi)容拼裝起來 183
5.14 解決方案:將兩個視圖居中對齊 185
5.15 解決方案:設(shè)定寬高比 186
5.16 解決方案:響應(yīng)屏幕方向的變更 188
5.17 調(diào)試約束規(guī)則 190
5.18 解決方案:描述約束規(guī)則 191
5.19 用宏來創(chuàng)建約束規(guī)則 194
5.20 小結(jié) 197
第6章 文本輸入 198
6.1 解決方案:隱藏UITextField的鍵盤 199
6.1.1 阻止系統(tǒng)把鍵盤隱藏起來 200
6.1.2 UITextInputTraits協(xié)議中的屬性 200
6.1.3 文本框的其他屬性 201
6.2 解決方案:把帶有自定義輔助視圖的鍵盤隱藏起來 203
6.3 解決方案:根據(jù)鍵盤來調(diào)整文本視圖 205
6.4 解決方案:創(chuàng)建自定義的輸入視圖 209
6.5 解決方案:使視圖具備文本輸入功能 213
6.6 解決方案:為非文本視圖添加自定義的輸入視圖 216
6.7 解決方案:創(chuàng)建更好的文本編輯器(第一部分) 218
6.8 解決方案:創(chuàng)建更好的文本編輯器(第二部分) 221
6.8.1 啟用Attributed Text 221
6.8.2 控制文本的樣式 221
6.8.3 可供UIResponder使用的其他功能 223
6.9 解決方案:過濾用戶所輸入的文本 224
6.10 解決方案:檢測文本模式 226
6.10.1 構(gòu)建自己的正則表達(dá)式 227
6.10.2 枚舉正則表達(dá)式 227
6.10.3 數(shù)據(jù)探測器 228
6.10.4 使用內(nèi)置類型的探測器 229
6.10.5 有用的網(wǎng)站 229
6.11 解決方案:檢測UITextView中的拼寫錯誤 231
6.12 搜尋文本中的字符串 232
6.13 小結(jié) 233
第7章 使用視圖控制器 234
7.1 視圖控制器 234
7.1.1 UIViewController類 235
7.1.2 導(dǎo)航控制器 235
7.1.3 標(biāo)簽欄控制器 235
7.1.4 分欄視圖控制器 236
7.1.5 頁面視圖控制器 236
7.1.6 popover控制器 236
7.2 使用導(dǎo)航控制器與分欄視圖控制器來開發(fā)程序 237
7.2.1 使用導(dǎo)航控制器與導(dǎo)航棧 238
7.2.2 推入與彈出視圖控制器 239
7.2.3 導(dǎo)航欄上的按鈕 239
7.2.4 延伸至屏幕邊緣的布局形式 240
7.3 解決方案:UINavigationItem類 241
7.3.1 標(biāo)題與后退按鈕 242
7.3.2 宏 242
7.4 解決方案:模態(tài)界面 244
7.5 解決方案:構(gòu)建分欄視圖控制器 248
7.6 解決方案:用分欄視圖及導(dǎo)航控制器創(chuàng)建通用的程序 253
7.7 解決方案:標(biāo)簽欄 255
7.8 記住標(biāo)簽的狀態(tài) 259
7.9 解決方案:頁面視圖控制器 262
7.9.1 與書籍展示風(fēng)格有關(guān)的屬性 262
7.9.2 封裝實(shí)現(xiàn)細(xì)節(jié) 263
7.9.3 范例代碼詳解 269
7.9.4 構(gòu)建界面索引 270
7.10 解決方案:自定義的容器 271
7.10.1 添加與移除子視圖控制器 274
7.10.2 視圖控制器之間的切換效果 275
7.11 解決方案:segue 276
7.12 小結(jié) 282
第8章 常用的控制器 284
8.1 圖像選取器控制器 284
8.1.1 圖像來源 284
8.1.2 在iPhone和iPad中顯示選取器 285
8.2 解決方案:選取圖像 286
8.2.1 向模擬器中添加圖片 286
8.2.2 AssetsLibrary模塊 286
8.2.3 展示選取器 287
8.2.4 處理delegate的回調(diào) 288
8.3 解決方案:拍攝照片 293
8.3.1 配置選取器 293
8.3.2 顯示圖像 295
8.3.3 把圖像保存到相冊 295
8.4 解決方案:錄制視頻 297
8.4.1 創(chuàng)建錄制視頻用的選取器 298
8.4.2 保存視頻 299
8.5 解決方案:用媒體播放器播放視頻 299
8.6 解決方案:編輯視頻 302
8.7 解決方案:選取并編輯視頻 304
8.8 解決方案:通過電子郵件發(fā)送圖片 306
8.9 解決方案:發(fā)送文本消息 309
8.10 解決方案:在社交網(wǎng)站發(fā)布消息 311
8.11 小結(jié) 313
第9章 創(chuàng)建并管理表格視圖 314
9.1 iOS的表格 314
9.2 委托 315
9.3 創(chuàng)建表格 316
9.3.1 表格的樣式 316
9.3.2 排布表格視圖 316
9.3.3 設(shè)置數(shù)據(jù)源 317
9.3.4 提供單元格 317
9.3.5 注冊單元格類 317
9.3.6 從隊列中取出單元格 318
9.3.7 設(shè)置delegate 318
9.4 解決方案:實(shí)現(xiàn)簡單的表格 319
9.4.1 數(shù)據(jù)源方法 319
9.4.2 響應(yīng)用戶的觸摸 322
9.5 UITableViewCell類 322
9.5.1 單元格的selectionStyle屬性 323
9.5.2 添加自定義的單元格受選效果 323
9.6 解決方案:創(chuàng)建帶有選取標(biāo)記的單元格 323
9.7 給單元格添加詳情展示控件 325
9.8 解決方案:編輯表格 327
9.8.1 添加撤銷功能 331
9.8.2 實(shí)現(xiàn)撤銷功能 332
9.8.3 顯示移除單元格所用的控件 332
9.8.4 處理刪除請求 332
9.8.5 通過滑動手勢刪除單元格 333
9.8.6 調(diào)整單元格的順序 333
9.8.7 添加單元格 333
9.9 解決方案:操控表格的區(qū)段 334
9.9.1 構(gòu)建區(qū)段 334
9.9.2 區(qū)段數(shù)量與區(qū)段內(nèi)的行數(shù) 335
9.9.3 返回單元格 335
9.9.4 創(chuàng)建每個區(qū)段的頭部標(biāo)題 337
9.9.5 定制表格與區(qū)段的頭部及尾部 338
9.9.6 創(chuàng)建區(qū)段索引 338
9.9.7 處理索引與區(qū)段不匹配的問題 339
9.9.8 為分區(qū)表格實(shí)現(xiàn)委托方法 339
9.10 解決方案:在表格中搜索 339
9.10.1 創(chuàng)建搜索顯示控制器 341
9.10.2 為搜索顯示控制器注冊單元格 341
9.10.3 構(gòu)建支持搜索功能的數(shù)據(jù)源方法 342
9.10.4 委托方法 343
9.10.5 使用與搜索功能相配套的索引 344
9.11 解決方案:給表格添加下拉刷新功能 345
9.12 解決方案:添加指令行 348
9.13 制作自定義的分組表格 351
9.14 解決方案:構(gòu)建含有多個滾輪的表格 352
9.14.1 創(chuàng)建UIPickerView 353
9.14.2 數(shù)據(jù)源方法與委托方法 353
9.14.3 使用帶有選取器的視圖 354
9.15 使用UIDatePicker 356
9.16 小結(jié) 357
第10章 集合視圖 358
10.1 集合視圖與表格的異同 358
10.2 建立集合視圖 360
10.2.1 通過控制器使用集合視圖 361
10.2.2 直接使用集合視圖 361
10.2.3 數(shù)據(jù)源與委托 362
10.3 流式布局 362
10.3.1 滾動方向 362
10.3.2 條目的尺寸以及行間距 362
10.3.3 頭部與尾部的尺寸 364
10.3.4 內(nèi)邊距 365
10.4 解決方案:采用流式布局的簡單集合視圖 366
10.5 解決方案:自定義單元格 370
10.6 解決方案:水平滾動的列表 372
10.7 解決方案:創(chuàng)建交互式的布局效果 375
10.8 解決方案:滾動之后自動調(diào)整位置 377
10.9 解決方案:創(chuàng)建圓形布局 378
10.9.1 實(shí)現(xiàn)創(chuàng)建條目與刪除條目時的動畫效果 381
10.9.2 增強(qiáng)圓形布局的實(shí)用性 382
10.9.3 布局對象 383
10.10 解決方案:用手勢調(diào)整布局 383
10.11 解決方案:創(chuàng)建真正的網(wǎng)格狀布局 385
10.12 解決方案:為集合視圖中的條目添加自定義菜單 391
10.13 小結(jié) 393
第11章 分享文檔與數(shù)據(jù) 394
11.1 解決方案:使用統(tǒng)一類型標(biāo)識符 394
11.2 解決方案:訪問系統(tǒng)剪貼板 400
11.3 解決方案:監(jiān)控Documents文件夾 403
11.4 解決方案:活動視圖控制器 408
11.5 解決方案:Quick Look預(yù)覽控制器 417
11.6 解決方案:使用文檔交互控制器 420
11.7 解決方案:聲明程序所支持的文檔類型 426
11.8 解決方案:創(chuàng)建基于URL的服務(wù) 431
11.9 小結(jié) 434
第12章 淺談Core Data 435
第13章 網(wǎng)絡(luò)編程基礎(chǔ) 462
第14章 針對特定設(shè)備的開發(fā) 493
第15章 輔助功能 524
附錄A Objective-C字面量 536
3.1.3顯示UIAlertView
show這個實(shí)例方法可以把UIAlertView顯示出來。而顯示出來之后,警告視圖就會呈現(xiàn)模態(tài)(modal)。也就是說,它后面的屏幕內(nèi)容會變暗,同時,用戶無法操作程序里面除UIAlertView之外的部分。等用戶通過點(diǎn)擊某個按鈕(通常是OK或Cancel)對UIAIertView做出確認(rèn)之后,這個模態(tài)視圖就消失了。此時,系統(tǒng)會把控制權(quán)交給UIAIertView的委托,使開發(fā)者可以在其中完成收尾工作,并對用戶所選的按鈕做出響應(yīng)。
UIAIertView的各項屬性在創(chuàng)建之后依然可以修改。你可通過修改title或messaqe屬性來定制它。message是一段可選的文本,它會出現(xiàn)在UIAlertView的title之下、按鈕之上。經(jīng)由addButt。nwithTitle:方法,還可以再添加一些按鈕。
3.1.4各種UIAlertView
開發(fā)者可以通過alertViewStyle屬性創(chuàng)建不同樣式的UIAlertView。按默認(rèn)樣式(也就是UIAIertViewStyleDefault)創(chuàng)建出來的UIAlertView具備標(biāo)題及信息文本,另外還可以有一些按鈕,其效果如圖3—1所示。這是UIAlertView系列中的基本款式,開發(fā)者能夠由此征詢用戶的意見,而用戶則可以通過點(diǎn)擊Yes/No、Cancel/OK等按鈕做出簡單的選擇。
iOS還提供了三種樣式,它們專門針對需要輸入文本的場合:
UIAlertViewStylePlainTextInput——用戶可以在這種樣式的UIAlertView里輸入文本。
UIAlertViewStyleSecureTextInput——假如要考慮安全問題,那么可以采用這種樣式
的UIAIertView,它會把用戶鍵入的文本自動遮蓋起來。文本將會以一系列大圓點(diǎn)
的形式來顯示,而開發(fā)者則可以在委托的回調(diào)方法中編寫代碼,讀取用戶輸入的內(nèi)容。
……