iOS 8人機(jī)界面指南(三):iOS技術(shù)(下)
索引
iOS 8人機(jī)界面指南(一):UI設(shè)計(jì)基礎(chǔ)
iOS 8人機(jī)界面指南(二):設(shè)計(jì)策略
iOS 8人機(jī)界面指南(三):iOS技術(shù)(上)
3.10 無線打?。ˋirPrint)
用戶可以通過AirPrint無線打印應(yīng)用中的內(nèi)容,還可以使用打印中心應(yīng)用檢查打印任務(wù)。
你可以使用內(nèi)置的支持程序來打印圖片和PDF文件,或者可以使用特定的打印程序接口來做自定義的格式設(shè)置和渲染設(shè)置。iOS會處理打印機(jī)的發(fā)現(xiàn),任務(wù)的排序以及在指定打印機(jī)上執(zhí)行打印任務(wù)。
通常來講,用戶想要打印文件的時(shí)候,只需要點(diǎn)擊應(yīng)用中的標(biāo)準(zhǔn)動作按鈕(Action button)。當(dāng)他們選擇了要打印的條目后,可以選擇打印機(jī),設(shè)置打印屬性,最后點(diǎn)擊打印按鈕開始打印。
打印中心應(yīng)用是一個(gè)只有在處理打印任務(wù)時(shí)才可見的后臺系統(tǒng)應(yīng)用,用戶可以用它來查看打印任務(wù)。用戶可以在打印中心瀏覽當(dāng)前打印隊(duì)列,查看某個(gè)打印任務(wù)的詳情,還可以取消某個(gè)任務(wù)。
只需添加少量代碼就可以支持基本打印功能(想要學(xué)習(xí)在代碼中添加打印功能,請查看Drawing and Printing Guide for iOS)。想要確保好的打印體驗(yàn),可以遵循以下幾點(diǎn):
使用系統(tǒng)提供的動作按鈕。用戶對系統(tǒng)提供的按鈕的含義和行為都很熟悉,所以盡可能的使用系統(tǒng)動作按鈕。如果你的應(yīng)用沒有工具欄或?qū)Ш綑?,那就要另?dāng)別論了。在這種情況下,你就需要自己設(shè)計(jì)一個(gè)可以出現(xiàn)在應(yīng)用主界面的打印按鈕,因?yàn)閯幼靼粹o只能在工具欄和導(dǎo)航欄中使用。
在當(dāng)前情境下打印操作是基本功能時(shí)才顯示打印項(xiàng)(Print item)。如果當(dāng)前情境并不適合打印,或者用戶并不想打印,就不要將打印項(xiàng)顯示出來。
在合適的時(shí)候給用戶提供更多打印選項(xiàng)。例如,讓用戶設(shè)置打印頁碼范圍或打印份數(shù)。
如果用戶不能打印,則不要顯示特定的打印頁面。在向用戶展示有打印項(xiàng)的界面前,確保用戶的設(shè)備是支持打印的。學(xué)習(xí)如何在代碼中實(shí)現(xiàn),請查看UIPrintInteractionController Class Reference。
3.11 訪問用戶數(shù)據(jù)(Accessing User Data)
位置服務(wù)允許應(yīng)用獲取用戶當(dāng)前大致的地理位置,設(shè)備指向的方向以及用戶移動的方向。其他系統(tǒng)服務(wù),例如通訊錄、日歷、備忘錄和相冊等,同樣也允許應(yīng)用訪問用戶存儲在里面的數(shù)據(jù)。
雖然獲取了用戶數(shù)據(jù)的應(yīng)用能帶來一定的方便,但還是需要為用戶提供維持信息私密性的功能。例如,用戶喜歡應(yīng)用自動給內(nèi)容加上位置標(biāo)簽,或者可以找到附近的好友,但用戶也需要能在不想分享位置的時(shí)候關(guān)閉這些功能。(想要學(xué)習(xí)如何給應(yīng)用增加獲取位置功能,請查看Location and Maps Programming Guide。)
以下幾點(diǎn)可以幫助您以用戶不反感的方式獲取用戶數(shù)據(jù)。
確保使用戶理解分享私人數(shù)據(jù)的原因。如果沒有明顯的需要,用戶自然會對私人信息的請求感到懷疑。為了避免用戶反感,確保在用戶使用明顯需要個(gè)人信息的功能時(shí)再進(jìn)行提醒。例如,即使沒有打開位置服務(wù)用戶也可以使用地圖,但是在用戶使用定位或?qū)Ш焦δ軙r(shí)就會有提醒。
應(yīng)用需要個(gè)人信息的原因不明顯時(shí)向用戶做出解釋。你可以在提醒框中給出文字性的描述,例如“這個(gè)應(yīng)用需要訪問你的通訊錄”或者“是否允許應(yīng)用獲取你的地理位置?”。這些文案最好明確且有禮貌以讓用戶無壓力的理解為什么需要訪問他們的信息。
講述原因的文案應(yīng)該:
- ?不要包含你的應(yīng)用名稱,因?yàn)橄到y(tǒng)提供的提醒框已經(jīng)包含了。
- 清楚地描述你的應(yīng)用為什么需要這些數(shù)據(jù)。如果可以的話,你也可以解釋不會用這些數(shù)據(jù)做什么。
- 使用以用戶為中心的術(shù)語并且進(jìn)行本地化。
- 在易于理解的情況下越短越好。盡可能避免超過一句話。
- 使用句式大小寫(sentence-style capitalization)。(句式大小寫指的是第一個(gè)單詞大寫,除了專有名詞和專有形容詞以外的詞都小寫。)
只有當(dāng)你的應(yīng)用沒有用戶數(shù)據(jù)就無法提供基礎(chǔ)服務(wù)時(shí),才在一開始就征求用戶的許可。如果你的應(yīng)用在知道了用戶私人信息后才能提供主要功能是顯而易見的話,用戶不會因此覺得煩擾。
避免在用戶選擇需要數(shù)據(jù)的功能之前調(diào)用觸發(fā)提醒框的程序。這樣,就可以避免用戶疑惑為什么在使用不需要私人數(shù)據(jù)的功能時(shí)有請求提醒。(注意,檢查用戶位置服務(wù)的設(shè)置并不會觸發(fā)提醒。)
檢查位置服務(wù)的設(shè)置來避免觸發(fā)沒必要的提醒。你可以使用核心位置的程序接口來實(shí)現(xiàn)(想要學(xué)習(xí)如何做,請查看Core Location Framework Reference)。使用這些知識,可以盡可能地在使用需要位置信息的功能時(shí)才進(jìn)行提醒,或者完全避免提醒。
3.12 快速查看(Quick Look)
使用Quick Look,用戶可以在你的應(yīng)用內(nèi)預(yù)覽文件,即使你的應(yīng)用是打不開這個(gè)文件的。例如,你可以允許用戶預(yù)覽一些從網(wǎng)站上下載或從其他來源收到的文件。
想要學(xué)習(xí)如何在應(yīng)用中加入Quick Look文件預(yù)覽功能,請查看Document Interaction Programming Topics for iOS。
用戶在應(yīng)用中預(yù)覽文件之前,可以在你自定義的視圖中查看文件的信息。例如,用戶從一封郵件中下載了附件之后,郵件應(yīng)用(Mail)會在郵件中以自定義的視圖展示文件的圖標(biāo)、標(biāo)題和大小。用戶可以通過點(diǎn)擊它來預(yù)覽文件。
你可以在應(yīng)用中用一個(gè)新的視圖來顯示文件預(yù)覽,使用全屏或者模態(tài)視圖。展示的形式取決于你的應(yīng)用運(yùn)行在什么設(shè)備上。
在iPad上可以使用模態(tài)視圖顯示文件預(yù)覽。iPad的大屏幕很適合在一個(gè)方便用戶離開的沉浸式環(huán)境中展示文件預(yù)覽??s放操作(zoom transition)很適合顯示預(yù)覽。
在iPhone上可以使用專用的視圖,最好是導(dǎo)航視圖來顯示文件預(yù)覽。這樣可以使用戶在應(yīng)用情境中通過導(dǎo)航進(jìn)入文件預(yù)覽。雖然也可以在iPhone應(yīng)用中使用模態(tài)顯示,但并不推薦這樣。(注意縮放操作在iPhone上并不適用。)
當(dāng)然,在導(dǎo)航視圖中顯示文件預(yù)覽可以在導(dǎo)航欄上放置特定的預(yù)覽控件。(如果你的視圖有工具欄,Quick Look會將預(yù)覽控件放在工具欄上。)
3.13 聲音(Sound)
無論聲音是你的應(yīng)用的主要內(nèi)容的一部分,還是錦上添花的元素,你都需要知道用戶對聲音的期望以及與如何滿足這些期望。
3.13.1 理解用戶期望(Understand User Expectations)
人們可以使用設(shè)備控件來改變聲音,也可能使用有線或無線的耳機(jī)和聽筒。人們也會對于他們的行為如何作用于他們聽到的聲音有各種各樣的期望。雖然你可能發(fā)現(xiàn)有一些期望很讓人意外,但它們都會遵循用戶控制的原則,即應(yīng)是用戶而非設(shè)備掌控聽到聲音的時(shí)機(jī)。
用戶會依據(jù)需要將設(shè)備靜音:
- 避免被突兀的音效打斷,比如手機(jī)鈴聲和信息接收音等
- 避免聽到作為用戶操作副產(chǎn)品的音效,比如鍵盤或其他反饋音、偶然的聲音或應(yīng)用啟動的聲音
- 避免聽到那些玩游戲時(shí)不必要出現(xiàn)的聲音,如音效和配樂
例如,在劇院中,用戶將他們的設(shè)備調(diào)至靜音以避免打擾劇院中的其他人。在這一情境下,用戶仍然希望能在他們的設(shè)備上使用應(yīng)用,但他們不希望被無預(yù)期或突兀的聲音所打斷,如手機(jī)鈴聲或新消息音。
在用戶進(jìn)行單純操作和有明確期望的操作時(shí),鈴音/靜音開關(guān)(或靜音開關(guān))不會屏蔽這些操作所導(dǎo)致的的聲音。例如:
- 獨(dú)立媒體應(yīng)用中的媒體播放是不會被靜音的,因?yàn)槊襟w播放是用戶明確要求的。
- 鬧鐘不能被靜音,因?yàn)轸[鐘是用戶明確設(shè)置的。
- 語言學(xué)習(xí)應(yīng)用中的音效素材不能被靜音,因?yàn)橛脩暨M(jìn)行了明確的操作希望聽到它。
- 音頻對話應(yīng)用中的對話不被靜音,因?yàn)橛脩舸蜷_這個(gè)應(yīng)用的唯一目的就是進(jìn)行音頻對話。
用戶使用設(shè)備的音量鍵調(diào)整所有音效的音量,包括歌曲、應(yīng)用音效和設(shè)備聲音。用戶能使用音量按鈕屏蔽所有聲音,無論鈴聲/靜音(或靜音)的開關(guān)在什么位置。使用音量鍵調(diào)整應(yīng)用當(dāng)前所播放的音頻時(shí)同樣調(diào)整了全局系統(tǒng)的音量,只有鈴聲音量除外。
對于iPhone:當(dāng)沒有音頻播放時(shí)使用音量鍵可以調(diào)整鈴聲音量。
用戶使用耳機(jī)可以私密地接聽聲音并解放他們的雙手。不管這些配件是有線或無線的,用戶都對用戶體驗(yàn)有特定的期待。
當(dāng)用戶插入耳機(jī)或連接無線音頻設(shè)備時(shí),他們意圖繼續(xù)收聽當(dāng)前的音頻,但是是以私密的狀態(tài)。由于這一原因,他們希望當(dāng)前正在播放音頻的應(yīng)用能繼續(xù)不中斷地播放。
當(dāng)用戶拔出耳機(jī)或斷開與無線設(shè)備的連接時(shí)(抑或設(shè)備超出范圍或關(guān)閉時(shí)),他們不希望他們剛剛收聽的內(nèi)容被自動地與他人分享?;谶@一原因,他們希望正在播放音頻的應(yīng)用暫停播放,并可以允許他們在愿意時(shí)能容易地重新開啟播放。
3.13.2 定義應(yīng)用的音頻行為(Define the Audio Behavior of Your App)
如果必要的話,你可以調(diào)整相關(guān)的、獨(dú)立的音量水平以在你的應(yīng)用音效輸出端制造出最好的混音。但是,最終音效輸出的音量也應(yīng)該能被系統(tǒng)音量所控制,無論是通過音量鍵還是音量滑條進(jìn)行調(diào)節(jié)。這意味著應(yīng)用的音頻輸出的控制權(quán)仍在它所屬的用戶手中。
確保你的應(yīng)用適時(shí)的顯示音頻路徑選擇。(音頻路徑(audio route)是指音頻信號的電子通路,例如源于設(shè)備的耳機(jī)或是設(shè)備的揚(yáng)聲器。)即使人們沒有物理性的插入或拔出音頻設(shè)備,他們也仍希望能選擇一個(gè)不同的音頻路徑。為了實(shí)現(xiàn)這一功能,iOS能自動顯示一個(gè)控件來允許用戶選擇一個(gè)輸出音頻路徑(使用MPVolumeView類能允許這個(gè)控件顯示在你的應(yīng)用中)。由于選擇不同的音頻路徑是用戶主動的行為,用戶期望當(dāng)前播放的音頻能繼續(xù)不中斷。
如果你需要顯示音量滑條并使用MPVolumeView類時(shí),確保使用系統(tǒng)原生的音量滑條以保證可用。要注意,當(dāng)激活的音頻輸出設(shè)備不支持音量控制時(shí),要使用合適的設(shè)備名稱來替代音量滑條。
如果你的應(yīng)用只產(chǎn)生一些與其功能無必要關(guān)系的界面音效時(shí),(盡量)使用系統(tǒng)音效服務(wù)(System Sound Services)。系統(tǒng)音效服務(wù)是iOS系統(tǒng)下產(chǎn)生警示音、界面音效和調(diào)用振動的技術(shù);它不適合任何其他用途。當(dāng)你使用系統(tǒng)音效服務(wù)來產(chǎn)生音效時(shí),你無法干涉你的音頻與設(shè)備的音頻的交互方式,也無法干涉設(shè)備配置變化和干擾的響應(yīng)方式。如想了解如何使用這一技術(shù),參閱Audio UI Sounds (SysSound)中的范例項(xiàng)目。
如果音效在你的應(yīng)用中扮演重要的角色,使用音頻會話服務(wù)(Audio Session Services)或是AVAudioSession類。這些程序接口不產(chǎn)生音效;相反,它們會幫助你了解你的音頻應(yīng)該如何與設(shè)備的音頻進(jìn)行交互以及如何響應(yīng)設(shè)備配置的干擾與變化。
對于iPhone:無論你使用什么樣的技術(shù)來制作音頻,無論你如何定義來它的行為,手機(jī)總是可以中斷當(dāng)前運(yùn)行的應(yīng)用。這是因?yàn)槿魏螒?yīng)用都不應(yīng)該阻止人們接收來電。
在音頻會話服務(wù)中,音頻會話(audio session)執(zhí)行了你的應(yīng)用與系統(tǒng)之間音頻中介的功能。音頻會話中最重要的方面之一就是類目(category),它定義了你的應(yīng)用的音頻行為。
為了實(shí)現(xiàn)音頻會話服務(wù)帶來的好處并能提供用戶期望的音頻體驗(yàn),你需要選擇可以完美描述應(yīng)用音頻行為的類目。具體情況取決于你的應(yīng)用只在前臺播放音頻還是也要在后臺播放音頻。在你做這一選擇的時(shí)候,遵循以下這些原則:
- 依據(jù)其語義而非精確的行為來選擇音頻會話類目。通過選擇目的清晰的類目,你可以確保你的應(yīng)用能表現(xiàn)得符合用戶期望。除此之外,當(dāng)以后行為的精確集合被重新定義時(shí),它可以為你的應(yīng)用提供最佳的機(jī)會使其合理運(yùn)行。
- 在極少數(shù)情況下,可以添加屬性到音頻會話中以修正一個(gè)類別的標(biāo)準(zhǔn)行為。一個(gè)類別的標(biāo)準(zhǔn)行為代表多數(shù)用戶的期望,因此在你改變那個(gè)行為之前你應(yīng)該仔細(xì)地考慮。例如,你可能要添加“閃避”屬性以確保你的音頻聲音能比其他所有的音頻都大(除了手機(jī)音頻),如果你的用戶對你的應(yīng)用是如此期望的話。(欲了解更多關(guān)于音頻會話屬性的內(nèi)容, 請參見Audio Session Programming Guide中的Fine-Tuning the Category章節(jié)。)
- 依據(jù)設(shè)備當(dāng)前的音頻環(huán)境來考慮你的類目選擇。這也許意味著,例如,用戶在使用你的應(yīng)用時(shí)可能聽著其它的音效而非你的配樂。如果你這樣做,要確保避免當(dāng)你的應(yīng)用啟動時(shí),迫使用戶停止收聽當(dāng)前的內(nèi)容或要需要額外地在兩者之間做出選擇。
- 通常來說,要避免在你的應(yīng)用運(yùn)行時(shí)改變類目。改變類目的首要依據(jù)是你的應(yīng)用是否需要在不同的時(shí)機(jī)支持記錄和播放。在這種情況下,更好的選擇是依據(jù)需要在錄音類目與播放類目之間轉(zhuǎn)換,而非選擇播放和錄音類目。這是因?yàn)檫x擇錄音類目可以確保正在錄音時(shí)不會聽到警告音,比如來信提示音。
表31-1列舉了你可以使用的音頻會話類目。不同的類目可以允許通過鈴聲/靜音開關(guān)或靜音開關(guān)(或設(shè)備鎖)來實(shí)現(xiàn)靜音、與其他的音頻混合或者控制應(yīng)用在后臺播放。(欲了解編程界面上所呈現(xiàn)的的類目和屬性的準(zhǔn)確名稱,參見Audio Session Programming Guide。)
表31-1 音頻會話類目及其相關(guān)行為
類目 | 意義 | 靜音 | 混合 | 后臺播放 |
個(gè)人環(huán)境 | 聲音增強(qiáng)了應(yīng)用的功能且應(yīng)該靜音其他音頻 | 支持 | 不支持 | 不支持 |
環(huán)境 | 聲音增強(qiáng)了應(yīng)用的功能且應(yīng)該靜音其他音頻。 | 支持 | 支持 | 不支持 |
播放 | 聲音對應(yīng)用來說很重要且可能與其他音頻混合。 | 不支持 | 不支持 | 支持 |
錄音 | 音頻是用戶記錄的。 | 不支持 | 不支持(默認(rèn))支持(當(dāng)“與其他音頻混合”屬性被添加時(shí)) | 支持 |
播放和錄音 | 聲音代表音頻輸入與輸出,可以按順序或同時(shí)。 | 不支持 | 不支持(默認(rèn))支持(當(dāng)“與其他音頻混合”屬性被添加時(shí)) | 支持 |
音頻處理 | 應(yīng)用執(zhí)行硬件輔助音頻編碼(不播放或錄音)。 | 不適用 | 不支持 | 支持 |
*如果你選擇音頻處理類目并且你希望在后臺運(yùn)行音頻進(jìn)程,你需要在完成音頻處理之前防止你的應(yīng)用被暫停。欲了解如何實(shí)現(xiàn)這一功能,參見《iOS應(yīng)用編程指南》中的執(zhí)行長時(shí)間運(yùn)行的后臺任務(wù)。
以下是一些示例情境,其中指示了如何選擇音頻會話類目以提供用戶喜歡的音頻體驗(yàn)。
情境1:一個(gè)幫助人們學(xué)習(xí)新語言的教育類應(yīng)用。你需要提供:
- 用戶點(diǎn)擊特定控件時(shí)播放反饋音效
- 當(dāng)用戶想聽到正確發(fā)音的示例時(shí)播放字詞的記錄
在這個(gè)應(yīng)用中,聲音對于主要功能是十分重要的。人們使用這個(gè)應(yīng)用來聽他們正學(xué)習(xí)的語言的詞語與短語,因此即使當(dāng)設(shè)備鎖定或者被調(diào)至靜音時(shí)也要能播放聲音。因?yàn)橛脩粜枰逦芈牭铰曇?,他們會期望其他他們可能播放的音頻都被靜音。
為了滿足用戶對于該應(yīng)用所期望的音頻體驗(yàn),你應(yīng)該使用播放(Playback?)類目。雖然這一類目可以被定義為與其他音頻混合,但該應(yīng)用應(yīng)該使用默認(rèn)的行為以確保其他的音頻不會干擾那些用戶明確選擇聽到的教育性內(nèi)容。
場景2:網(wǎng)絡(luò)電話應(yīng)用。你需要提供:
- 接收音頻輸入的能力
- 播放音頻的能力
在該應(yīng)用中,聲音對于主要功能是十分重要的。人們經(jīng)常會在使用另一個(gè)應(yīng)用時(shí)使用該應(yīng)用與他人進(jìn)行交流。用戶期望能在他們將設(shè)備調(diào)至靜音或設(shè)備被鎖定時(shí)接聽電話,他們希望在來電期間其他音頻被靜音。他們也希望應(yīng)用在后臺運(yùn)行時(shí)也能繼續(xù)打電話。
為了滿足用戶對于該應(yīng)用所期望的音頻體驗(yàn),你應(yīng)該使用播放和錄音(Play and Record)類目,并且你要確保只有在你需要時(shí)才會激活你的音頻會話,以便用戶可以在打電話過程中使用其他音頻。
場景3:允許用戶通過不同任務(wù)引導(dǎo)角色的游戲。你需要提供:
- 不同的游戲運(yùn)行音效
- 配樂
在該應(yīng)用中,聲音會在很大程度上提升用戶體驗(yàn),但對于主任務(wù)并沒有那么重要。而且,用戶可能會希望能在玩游戲時(shí)靜音或聽他們樂單中的歌曲而不聽游戲配樂。
最好的策略是在你的應(yīng)用啟動時(shí)確定用戶是否在收聽其他音頻。不要要求用戶選擇他們是要收聽其他音頻或是你的音效。而應(yīng)該使用音頻會話功能中的AudioSessionGetProperty來詢問kAudioSessionProperty_OtherAudioIsPlaying屬性的狀態(tài)。依據(jù)所詢問的答案,你可以選擇環(huán)境(Ambient)或是個(gè)人環(huán)境(Solo Ambient)類目(這兩種類允許用戶靜音玩游戲):
- 如果用戶正在聽其他音頻,你應(yīng)該假設(shè)他們想要繼續(xù)聽并且不想被強(qiáng)迫收聽游戲音效。在這種情境下,你最好選擇環(huán)境(Ambient)類目。
- 如果用戶在你的應(yīng)用啟動時(shí)沒有在收聽其他音效,你最好選擇個(gè)人環(huán)境(Solo Ambient)類目。
情境4:一個(gè)為用戶到達(dá)目的地提供準(zhǔn)確、實(shí)時(shí)導(dǎo)航指示的應(yīng)用。你需要提供:
- 每一步旅途的語音指示
- 一些反饋音效
- 支持用戶繼續(xù)收聽他們自己的音頻的能力
在該應(yīng)用中,無論應(yīng)用是否是在后臺運(yùn)行,語音導(dǎo)航指示都表現(xiàn)為主要任務(wù)?;谶@一原因,你最好使用播放(Playback)類目,它允許你的音頻在設(shè)備被鎖定、靜音或是在后臺運(yùn)行時(shí)仍可以播放。
你可以通過添加kAudioSessionProperty_OverrideCategoryMixWithOthers屬性來實(shí)現(xiàn)允許人們在使用你的應(yīng)用時(shí)收聽其他音頻。但是你也想要確保用戶在他們正在播放其他音頻時(shí)能聽到語音提示。你可以為音頻會話添加kAudioSessionProperty_OtherMixableAudioShouldDuck屬性來確保你的音頻比其他音頻的聲音更大,除了iPhone上的電話以外。這些設(shè)置允許應(yīng)用在后臺運(yùn)行時(shí)也可以恢復(fù)音頻會話,可以確保用戶能獲得實(shí)時(shí)更新的導(dǎo)航。
情境5:一個(gè)允許用戶上傳文本和圖片到網(wǎng)站上的博客應(yīng)用。你需要提供:
- 簡短的啟動音效文件
- 用以補(bǔ)充用戶行為的各式各樣的短音效(例如當(dāng)郵件被上傳后播放的音效)
- 發(fā)送失敗播放的警示音
在該應(yīng)用中,聲音提升了用戶體驗(yàn),但也不是必需的。主任務(wù)與音頻并沒有關(guān)系,用戶也不是必須要通過收聽聲音來成功使用應(yīng)用。在這一情境中,你最好使 用系統(tǒng)聲音服務(wù)來產(chǎn)生聲音。這是因?yàn)閼?yīng)用中所有聲音的音頻情境都應(yīng)符合本技術(shù)的目的,這意味著要遵循用戶意愿制造服從于設(shè)備鎖定和鈴聲/靜音(或靜音)開 關(guān)的界面音效和警示音。
3.13.3 管理音頻中斷(Manage Audio Interruptions)
有時(shí)候,當(dāng)前播放的音頻會被來自于不同應(yīng)用的音頻所打斷。例如,在iPhone上,來電會持續(xù)中斷當(dāng)前應(yīng)用的音頻。在多任務(wù)情境中,這種音頻中斷的頻率會很高。
為了提供用戶喜歡的音頻體驗(yàn),iOS系統(tǒng)依賴于你來:
- 識別可能會引起應(yīng)用中斷的音頻類型
- 當(dāng)應(yīng)用在音頻中斷結(jié)束后繼續(xù)運(yùn)行時(shí)進(jìn)行合理地反饋
每個(gè)應(yīng)用需要識別會引起音頻中斷的類型,但不是每個(gè)應(yīng)用都需要決定如何在音頻中斷結(jié)束后進(jìn)行反饋。這是因?yàn)槎鄶?shù)類型的應(yīng)用應(yīng)在音頻中斷結(jié)束后恢復(fù)音頻。只有那些主要或部分(即那些提供媒體播放控制的應(yīng)用)的媒體播放應(yīng)用,才必須才用額外的步驟來決定合適的反饋。
從概念上講,基于中斷音頻與中斷結(jié)束后用戶所期望的特別的應(yīng)用反饋,有兩種類型的音頻中斷:
- 可恢復(fù)性中斷是(resumable interruption)被 一些音頻引起的,那些音頻被用戶視為他們主要聽覺體驗(yàn)的的插曲。在可恢復(fù)性中斷結(jié)束后,顯示媒體播放控件的應(yīng)用應(yīng)該恢復(fù)它被中斷前的任務(wù),無論是在播放音 頻還是保持暫停。沒有音頻播放控件的應(yīng)用則應(yīng)該恢復(fù)播放音頻。例如,試想用戶在iPhone上使用應(yīng)用播放音樂時(shí),電話在歌曲的中間接入。用戶接起了電 話,期望在他們通話時(shí)播放的應(yīng)用能靜音。在通話結(jié)束后,用戶希望播放的應(yīng)用自動恢復(fù)播放歌曲,因?yàn)橐魳范请娫挷攀撬麄兊闹饕犛X體驗(yàn),而他們在電話接入 前也沒有暫停音樂。另一方面,如果用戶在電話接入前暫停了音樂播放,他們將希望電話結(jié)束后音樂仍保持暫停。其他能引起可恢復(fù)性中斷的應(yīng)用的例子包括那些具 備鬧鐘、音頻提示(例如語音方向指示)或其他間歇性音頻功能的應(yīng)用。
- 不可恢復(fù)中斷(nonresumable interruption)是 由那些被用戶視為首要聽覺體驗(yàn)的音頻所引起的,比如媒體播放用用的音頻。在不可恢復(fù)中斷結(jié)束后,顯示媒體播放控件的應(yīng)用不應(yīng)該恢復(fù)播放那個(gè)音頻。而沒有媒 體播放控件的應(yīng)用應(yīng)該恢復(fù)播放音頻。例如,假設(shè)用戶正在收聽一個(gè)音樂播放應(yīng)用(音樂應(yīng)用1),此時(shí)另一個(gè)音樂播放應(yīng)用(音樂應(yīng)用2)打斷了它。用戶終止后 決定收聽音樂應(yīng)用2一段時(shí)間。在退出音樂應(yīng)用2之后,用戶不想要音樂應(yīng)用1自動恢復(fù)播放,因?yàn)榇藭r(shí)他們主動將音樂應(yīng)用2作為首要的聽覺體驗(yàn)。
下列準(zhǔn)則可以幫助你決定支持什么信息以及如何在音頻中斷之后繼續(xù):
確定你的應(yīng)用引起的音頻中斷的類型。在你的音頻結(jié)束時(shí),你可以通過以下兩種方式中的一種禁用你的音頻會話來實(shí)現(xiàn)這一功能:
- 如果你的應(yīng)用引起了一個(gè)可恢復(fù)性中斷,使用AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation標(biāo)識禁用你的音頻會話。
- 如果你的應(yīng)用引起了一個(gè)不可恢復(fù)中斷,不用任何標(biāo)識就可以禁用你的音頻會話。
倘若不這樣,標(biāo)識會在適宜的情況下允許iOS系統(tǒng)賦予被中斷的應(yīng)用自動恢復(fù)播放它們的音頻的能力。
決定是否應(yīng)該在一個(gè)音頻中斷結(jié)束后恢復(fù)音頻。你應(yīng)依據(jù)你應(yīng)用中所提供的音頻用戶體驗(yàn)來做這一決斷。
- 如果你的應(yīng)用呈現(xiàn)了用戶用于播放或暫停音頻的媒體播放控件,你需要在一個(gè)音頻中斷結(jié)束后檢查AVAudioSessionInterruptionFlags_ShouldResume標(biāo)識,如果你的應(yīng)用接受應(yīng)該恢復(fù)(Should Resume)標(biāo)識,你的應(yīng)用應(yīng)該:
· 如果你的應(yīng)用被打斷時(shí)在主動播放音頻,恢復(fù)播放音頻;
· 如果你的應(yīng)用被打斷時(shí)沒有在主動播放音頻,不需要恢復(fù)播放音頻。 - 如果你的應(yīng)用沒有呈現(xiàn)任何用戶可用于播放或暫停音頻的媒體播放控件,你的應(yīng)用應(yīng)該在音頻中斷結(jié)束后總是保持恢復(fù)之前播放的音頻,無論是否呈現(xiàn)了“應(yīng)該恢復(fù)”標(biāo)識。例如,播放音效的游戲應(yīng)該在中斷后自動恢復(fù)播放音效。
3.13.4 適時(shí)處理媒體遠(yuǎn)程控制事件(Handle Media Remote Control Events, if Appropriate)
當(dāng)人們使用iOS媒體控制或輔助控制(如耳機(jī)線控)時(shí),應(yīng)用要能響應(yīng)遠(yuǎn)程控制事件。這需要允許你的應(yīng)用能接收來自于你的用戶界面之外的輸入,無論你的應(yīng)用當(dāng)前是在前臺還是后臺播放音頻。
應(yīng)用可以播放仍在進(jìn)行時(shí),通過后臺向支持Airplay的硬件(如Apple TV)發(fā)送視頻。這樣的應(yīng)用接收通過遠(yuǎn)程控制事件實(shí)現(xiàn)的用戶輸入行為,據(jù)此用戶可以控制處于后臺運(yùn)行狀態(tài)的應(yīng)用中的視頻播放。除此之外,這類的應(yīng)用程序也 能在音頻會話被打斷而轉(zhuǎn)入后臺時(shí)重新將其激活。
一個(gè)媒體播放應(yīng)用,特別是它會在后臺播放音頻或視頻時(shí),尤其需要合理響應(yīng)媒體遠(yuǎn)程控制事件。
當(dāng)你的應(yīng)用在后臺運(yùn)行時(shí),為了滿足與播放媒體特權(quán)相關(guān)的責(zé)任,要確保遵循以下這些原則:
限制你的應(yīng)用接收遠(yuǎn)程控制事件的次數(shù)。例如,當(dāng)你的應(yīng)用可以幫助用戶閱讀內(nèi)容、搜索信息或是收聽音頻時(shí),它只有 在用戶處于音頻場景中時(shí)才應(yīng)該接收遠(yuǎn)程控制事件。當(dāng)用戶脫離音頻情境時(shí),你應(yīng)該放棄接收事件的能力。如果你的應(yīng)用允許用戶在支持AirPlay的設(shè)備上播 放音視頻,它應(yīng)該在媒體播放期間都可以接收遠(yuǎn)程控制事件。遵循這些原則會允許用戶在你的應(yīng)用中處于非媒體情境中時(shí),可以體驗(yàn)到不一樣的應(yīng)用媒體,并能用耳 機(jī)控制它。
盡可能的使用系統(tǒng)原生的控件以提供AirPlay支持。當(dāng)你使用MPMoviePlayerController類實(shí)現(xiàn)AirPlay播放功能時(shí),你可以利用標(biāo)準(zhǔn)的控件以允許用戶選擇當(dāng)前范圍內(nèi)支持AirPlay的硬件?;蛘吣憧梢允褂?a target="_blank" rel="noopener">MPVolumeView類來顯示用戶可選擇的支持AirPlay的音頻或視頻設(shè)備。用戶習(xí)慣于這些標(biāo)準(zhǔn)控件的外觀和行為,因此他們可以理解如何在你的應(yīng)用中使用它們。
不要改變事件的用途,即使這個(gè)事件在你的應(yīng)用中沒有意義。用戶期望iOS系統(tǒng)的所有應(yīng)用媒體控制和輔助控制能有功能上的統(tǒng)一。你不必實(shí)現(xiàn)你的應(yīng)用所不需要的那些事件,但你所實(shí)現(xiàn)的事件必須產(chǎn)生符合用戶期望的結(jié)果。如果你重新定義一個(gè)事件的意義,你會使用戶困惑并冒險(xiǎn)把他們帶入一個(gè)未知的狀態(tài),他們只能通過退出你的應(yīng)用來逃離。
3.14 VoiceOver
VoiceOver增加了對盲人、弱視用戶,以及一些有學(xué)習(xí)困難的用戶的輔助性。
為了確保VocieOver的用戶能使用你的應(yīng)用,你可能需要確保你的用戶界面內(nèi)的頁面和控制器能提供一些描述性信息。對VoiceOver的支持不需要你改變你用戶界面內(nèi)的任何視覺設(shè)計(jì)。
當(dāng)你完全遵照標(biāo)準(zhǔn)的方式使用標(biāo)準(zhǔn)的用戶界面元素時(shí),幾乎不(即使有也很少)需要增加額外的工作。你的用戶界面越趨向定制化,你就越需要提供更多的信息來保證VoiceOver能準(zhǔn)確的描述你的應(yīng)用。
增加你的iOS應(yīng)用對VoiceOver用戶的可用性,可以擴(kuò)大你的用戶基礎(chǔ)并幫助你進(jìn)入新的市場。支持VoiceOver也可以幫助你遵守由主流群體所制定的輔助性指導(dǎo)準(zhǔn)則。
3.15 路線選擇(Routing)
地圖可以顯示到達(dá)用戶目的地的可選路線:
當(dāng)人們想要獲得關(guān)于某條路線的更多交通信息時(shí),地圖也可以顯示能提供路線選擇的應(yīng)用列表——既包括安裝在設(shè)備上的應(yīng)用也包括應(yīng)用商店中的應(yīng)用。
路線選擇應(yīng)用可以提供當(dāng)前選擇的路線有關(guān)的信息。人們希望路線選擇應(yīng)用能夠快捷、易用,特別是保證準(zhǔn)確性。依據(jù)本章提供的指導(dǎo)原則能幫你為用戶提供他們可信任的交通信息和他們期望的用戶體驗(yàn)。
重要:地圖能依據(jù)人們選擇的路線給他們提供駕車和步行的指示。路線選擇應(yīng)用可以提供交通信息,它著重于使用交通工具(如公交車、火車、地鐵、渡船、自行車、行人、穿梭巴士等)的模型替代實(shí)物逐步地指示方向。
如果你的應(yīng)用不能提供用戶指定的路線的交通信息,那么不要將你的應(yīng)用定位為路線選擇應(yīng)用。
實(shí)現(xiàn)你的應(yīng)用承諾的功能。當(dāng)人們在交通列表里看到你的應(yīng)用時(shí),他們認(rèn)為它可以幫助其到達(dá)目的地。但是如果你的應(yīng) 用不能提供所選路線的信息——或者它沒能涵蓋它看似應(yīng)該涵蓋的那些種類的交通信息——人們就不會愿意給它第二次機(jī)會。準(zhǔn)確的表達(dá)出你的應(yīng)用的能力是十分重 要的;否則,你的應(yīng)用會看起來像是在故意誤導(dǎo)用戶。
在你的路線選擇應(yīng)用中,有兩種主要的方式可以給用戶信心:
- 盡可能準(zhǔn)確的定義你所支持的地理區(qū)域。例如,如果你的應(yīng)用能幫助人們獲得巴黎的公交線路的信息,那你所支持的地區(qū)應(yīng)該是巴黎,不是法蘭西島,也不是法國。
- 明確你所支持的交通信息類型。例如,如果你專攻于地鐵信息,不要暗示你仿佛支持所有的軌道交通類型
注意:雖然準(zhǔn)確的報(bào)告你所支持的地區(qū)意味著將會減少你的應(yīng)用在交通信息列表里的出現(xiàn)次數(shù),但這么做卻可以幫助用戶更加信任它。
為易用性合理組織界面。易用性對于路線規(guī)劃應(yīng)用來說特別重要,因?yàn)橛脩舫3跇O具挑戰(zhàn)性的情況下使用它們——例如在明亮的陽光下、在昏暗的車廂內(nèi)抑或是在顛簸的旅程中,或在非常緊急的情況下。要確保你的文字在任何光照條件下都能容易的閱讀,確保按鈕即使在并不平穩(wěn)的旅程中也能易于準(zhǔn)確點(diǎn)擊。
專注于路線。雖然輔助信息會很有用,但你的應(yīng)用應(yīng)該專注于為用戶提供逐步的指示以便他們能據(jù)此到達(dá)目的地。特別要強(qiáng)調(diào)的是,你要讓用戶知道他們處于哪一步,并知道如何到達(dá)下一步。你可以提供額外的數(shù)據(jù)——比如時(shí)間表或系統(tǒng)地圖——但不要讓這些數(shù)據(jù)比交通信息還重要。
為路線的每一步提供信息。永遠(yuǎn)不要讓用戶感覺被你的應(yīng)用所遺棄。即使在可以 準(zhǔn)確的報(bào)道你所支持的地區(qū)時(shí),你也不能假定用戶已經(jīng)抵達(dá)的路線中的第一個(gè)交通節(jié)點(diǎn)或是最后一個(gè)交通節(jié)點(diǎn)就是他們目的地點(diǎn)。為了控制這一情況,首先就是測量 起點(diǎn)到終點(diǎn)距離。如果距離足夠短,要提供從用戶當(dāng)前位置到第一個(gè)交通節(jié)點(diǎn)及從最后一個(gè)交通節(jié)點(diǎn)到用戶目的地的步行方向指示。如果步行不是一個(gè)合理的選擇, 嘗試描繪用戶的其他選項(xiàng)。如果必要的話,你可以給用戶提供打開地圖,獲取這部分路線的步行或駕車方向指示的方式。
當(dāng)用戶從地圖應(yīng)用切回你的應(yīng)用時(shí),不要要求他們重復(fù)輸入信息。如果用戶從地圖應(yīng)用切入(你的應(yīng)用)時(shí),你已經(jīng)獲知了他們中意的起點(diǎn)與終點(diǎn),因此你可以在應(yīng)用打開時(shí)直接呈現(xiàn)適合的交通信息。如果用戶從主屏幕中開啟你的應(yīng)用,要為他們提供簡潔的方式用以輸入路線詳情。
顯示圖文并茂的交通信息。地圖頁面可以幫助人們以更大的、實(shí)物性的視角查閱他們完整的線路;清晰的步驟可以幫助人們專注于他們抵達(dá)目的地所需采取的必要行動。最好可以同時(shí)支持這兩個(gè)任務(wù)并能讓用戶便捷地進(jìn)行切換。
注意:無論以什么格式,最重要的是顯示與用戶線路相關(guān)的相同的交通信息。例如,如果路線中包含五個(gè)步驟,在地圖和路線列表頁中必須描繪相同的五步。
當(dāng)你的應(yīng)用被從交通列表中選中時(shí),需要以顯示完整的線路做為良好的開始——包括在地圖頁面中顯示始于或抵達(dá)交通節(jié)點(diǎn)的步行路線。地圖頁面可以為用戶提供他們旅途的多步驟的總覽,并能展示適于周遭地理環(huán)境的路線。
用附加信息豐富地圖頁面。人們期望你的應(yīng)用中的地圖可以表現(xiàn)的與他們使用過的其他地圖相似。除了用戶能放大和縮小以外,你還應(yīng)該顯示用戶所需的那些注釋信息。例如,你應(yīng)該顯示圖釘用以代表用戶當(dāng)前的位置、目的地以及沿路的轉(zhuǎn)乘點(diǎn)或重要的節(jié)點(diǎn)。
確保避免只顯示一個(gè)單獨(dú)的圖釘,因?yàn)閷τ脩魜碚f,如果沒有額外的背景,很難理解它代表什么。欲了解在你的應(yīng)用中使用地圖頁面的更多信息,詳見Map View.
盡可能的整合靜態(tài)地圖頁面——例如在地圖視圖中加入地鐵系統(tǒng)地圖等。一個(gè)很好的實(shí)現(xiàn)方法就是在地圖頁面覆蓋靜態(tài)圖片,以便用戶可以看到他們的路線及他們的當(dāng)前位置是如何與更大的交通系統(tǒng)相關(guān)的。
注意:如果你決定讓應(yīng)用顯示一個(gè)靜態(tài)的地圖圖片,要確保使用高分辨率的圖片以保證用戶在縮放時(shí)維持高質(zhì)量的顯示。
給用戶提供不同的方案來挑選多樣的交通選擇。很多因素會影響人們交通的選擇—例如不同的時(shí)間段,天氣以及他們攜 帶東西的多少—所以提供簡潔地不同交通方式的對比是十分重要的。例如,你要能讓用戶可以依據(jù)開始或結(jié)束的時(shí)間、需要步行的數(shù)量、沿途停下的次數(shù)抑或轉(zhuǎn)乘的 次數(shù)或所需的不同的交通類型等來挑選交通方式。不管你顯示多種交通選擇的順序如何,確保用戶能立即分辨出這些選項(xiàng)的不同之處。
考慮使用推送通知為人們提供與路線相關(guān)的重要信息。盡可能的讓人們了解交通情況信息的變化,以便他們可以據(jù)此調(diào) 節(jié)自己的計(jì)劃。例如,如果火車晚點(diǎn)或者巴士路線臨時(shí)停滯,人們可能會需要選擇不同的交通路線到達(dá)目的地。而在一條不同步驟的站點(diǎn)之間相隔很長距離的交通路 線中,人們會希望在他們的交通工具將要抵達(dá)行程中的下一部分時(shí)能獲得通知。
3.16 編輯菜單(Edit Menu)
用戶能呼出一個(gè)編輯菜單來完成諸如在文本視圖、網(wǎng)頁或圖片視圖中的剪切、粘貼以及選擇操作。
你可以調(diào)整一些菜單的行為使用戶能更多的控制(活處理)你App中的內(nèi)容。舉個(gè)例子,你可以:
- 列舉出適合當(dāng)前情境的標(biāo)準(zhǔn)菜單的命令
- 在菜單顯示前判定菜單的位置,以便防止你App界面中重要的信息被遮蓋
- 定義當(dāng)用戶雙擊時(shí)會顯示默認(rèn)被選擇的對象的菜單
你不能改變菜單本身的顏色和形狀。
關(guān)于如何在代碼中實(shí)現(xiàn)這些行為的相關(guān)信息,參見Text Programming Guide for iOS中Copy, Cut, and Paste Operations章節(jié)。
為了確保編輯菜單在你的應(yīng)用中的表現(xiàn)符合用戶期望,你應(yīng)該:
在當(dāng)前情境下顯示合理的命令。例如,當(dāng)沒有對象被選擇的時(shí)候,菜單中不應(yīng)該包括復(fù)制或剪切(命令),因?yàn)檫@些命令是針對選擇(的內(nèi)容)而操作的。相似地,如果有對象被選擇的時(shí)候,菜單中不應(yīng)該包括選擇(命令)。如果你在自定義頁面中支持編輯菜單,你就有責(zé)任確保菜單中顯示的命令切合當(dāng)前的情境。
依據(jù)你的頁面布局調(diào)節(jié)菜單顯示。iOS在插入點(diǎn)或選擇的上方或下方依據(jù)可獲得的空間來放置菜單指針以顯示編輯菜單,這樣用戶就能看到菜單命令是如何與內(nèi)容相關(guān)的。必要的話,你可以通過程序在菜單顯示之前決定它的位置,這樣可以避免用戶界面中的重要信息被遮擋。
支持兩種手勢來調(diào)用菜單。雖然觸控和長按手勢是用戶呼起編輯菜單的首選方式,但他們也可以在文本頁面中通過雙擊一個(gè)單詞來選擇該單詞并同時(shí)呼起菜單。如果你在自定義頁面中支持菜單,確保它能支持兩種手勢。除此之外,你可以定義用戶雙擊時(shí)默認(rèn)的選擇對象。
避免在你的用戶界面中創(chuàng)建和編輯菜單中功能相同的按鈕。例如,使用編輯菜單讓用戶進(jìn)行復(fù)制操作遠(yuǎn)比提供一個(gè)復(fù)制按鈕要好,因?yàn)橛脩魧胫罏槭裁丛谀愕膽?yīng)用中會有兩種方法做同樣的事。
如果靜態(tài)文本的選擇對用戶來說是有用的,那么可以考慮使用它。用戶可能想要復(fù)制圖片的標(biāo)題,但他們不可能想復(fù)制選項(xiàng)卡的標(biāo)簽或是屏幕的標(biāo)題,比如“賬戶(Account)”。在文本頁面內(nèi),文字的選擇應(yīng)該是默認(rèn)設(shè)置的。
不要使按鈕標(biāo)題可選擇。如果按鈕的標(biāo)題是可選擇的,用戶很難在不激活按鈕的情況下呼出編輯菜單。通常來說,像按鈕這樣操作的元素不需要是可選擇的。
將對撤銷與重做的支持與對復(fù)制與粘貼的支持組合到一起。人們經(jīng)常希望在他們改變主意的時(shí)候能撤銷最近的操作。由于編輯菜單在它操作執(zhí)行的時(shí)候是不需要確認(rèn)的,你應(yīng)該給用戶提供撤銷或重做這些操作的機(jī)會。
如果你需要創(chuàng)建自定義的編輯菜單項(xiàng),需要像下面展示的這個(gè)例子一樣遵循這些指導(dǎo)原則:
創(chuàng)建直接作用于用戶選擇的包含編輯、修改或其他操作的編輯菜單。人們期望在當(dāng)前的情境內(nèi)用標(biāo)準(zhǔn)的編輯菜單項(xiàng)操作文本或?qū)ο螅敲茨愕淖远x菜單項(xiàng)最好能有相似的表現(xiàn)。
將自定義項(xiàng)列在所有系統(tǒng)提供的項(xiàng)的后面。不要將你的自定義項(xiàng)與系統(tǒng)提供的項(xiàng)混置在一起。
保持自定義菜單項(xiàng)的數(shù)量在合理的范圍內(nèi)。你不應(yīng)該用太多選擇淹沒你的用戶。
使用簡潔的名稱命名你的自定義菜單項(xiàng)并確保名稱能準(zhǔn)確的描述命令的作用。通常,項(xiàng)的名字應(yīng)該是一個(gè)可以描述行為 如何執(zhí)行的動詞。雖然你通常會使用單個(gè)的大寫單詞作為名字,但如果你必須使用一個(gè)短語(作為名字)時(shí),就應(yīng)使用標(biāo)題式大寫短語。(簡潔的、標(biāo)題性的大寫詞 就是將除了文章、四字及四字以下的并列連詞與介詞之外的每個(gè)單詞都要大寫。)
3.17 撤銷與重做(Undo and Redo)
用戶通過搖晃設(shè)備觸發(fā)撤銷操作,會顯示提醒框以允許他們:
- 撤銷他們剛才輸入的內(nèi)容
- 重做先前撤銷的輸入
- 取消撤銷操作
你可以在你的應(yīng)用中通過以下說明用更為通用的方式來支持撤銷操作:
- 用戶可以撤銷或重做的行為
- 在你的應(yīng)用下晃動事件是作為晃動撤銷手勢的
- 支持多少級的撤銷
欲了解如何用代碼實(shí)現(xiàn)這一行為,參見Undo Architecture。如果在你的應(yīng)用中支持撤銷和重做,遵循以下準(zhǔn)則以提供好的用戶體驗(yàn):
為用戶提供簡潔的描述性短語使其能準(zhǔn)確的獲知他們正在撤銷或重做的內(nèi)容。iOS系統(tǒng)自動提供了“撤銷”和“重 做”的字符串(包括詞語后面的空格)作為撤銷警示按鈕的標(biāo)題,但你需要提供一或兩個(gè)詞語用于輔助描述用戶的重做或撤銷操作。例如,你可能提供文本的“命 名”或“地址更改”之類的詞語用以創(chuàng)建像“撤銷命名”或“重新更改地址”這樣的按鈕標(biāo)題。(要注意,在提醒框中,“取消”按鈕是不能改變或移除的)。
避免提供太長的文本。太長的按鈕標(biāo)題容易被斷章取義并且很難被用戶解讀。由于這個(gè)文本是存在于按鈕的標(biāo)題之內(nèi),要使用標(biāo)題樣式的大寫形式并且不能添加標(biāo)點(diǎn)。
避免過度使用搖晃手勢。即使你能程式化的設(shè)定你的應(yīng)用將搖晃事件作為搖動撤銷操作,你也是在冒著混淆用戶視聽的風(fēng)險(xiǎn),因?yàn)樗麄円部赡苁褂脫u晃執(zhí)行一個(gè)不同的操作。分析你的應(yīng)用中的人機(jī)交互以避免創(chuàng)建那些用戶無法可靠地預(yù)測搖晃手勢結(jié)果的場景。
如果撤銷和重做在你的應(yīng)用中是基礎(chǔ)性任務(wù),盡量使用系統(tǒng)原生的撤銷與重做按鈕。記住搖晃手勢是用戶觸發(fā)撤銷與重做操作的主要方式,而如果提供兩種不同方式完成同樣的任務(wù)則會使用戶困惑。如果你認(rèn)為很有必要提供直觀專有的撤銷與重做操作,你可以在導(dǎo)航欄中放置系統(tǒng)原生的按鈕。(欲了解更多關(guān)于這些按鈕的信息,參見Toolbar and Navigation Bar Buttons)。
將撤銷與重做能力與用戶當(dāng)下的情境進(jìn)行清晰地關(guān)聯(lián),而非過早地介入情境。仔細(xì)考慮你允許進(jìn)行撤銷與重做操作的情境。通常來說,用戶期望他們的改變和操作可以立即被有效的執(zhí)行。
3.18 鍵盤和輸入頁面(Keyboards and Input Views)
在iOS8與之后的系統(tǒng)中,你可以創(chuàng)建自定義鍵盤的擴(kuò)展來替代系統(tǒng)原生鍵盤。欲了解更多關(guān)于管理應(yīng)用內(nèi)擴(kuò)展(包括鍵盤)的信息,參見?應(yīng)用擴(kuò)展章節(jié);欲了解如何開發(fā)自定義鍵盤擴(kuò)展的信息,參見App Extension Programming Guide中的Custom Keyboard章節(jié)。
在合適的情況下,你也可以在你的應(yīng)用內(nèi)設(shè)計(jì)自定義的輸入頁面來替代系統(tǒng)原生的屏幕鍵盤。例如,Numbers(譯者注:iWork中的電子表單應(yīng)用程序)中提供了多種輸入頁面,這些頁面的設(shè)計(jì)用以簡單高效地完成數(shù)量、日期和其他值的輸入。
如果你提供自定義輸入頁面,確保它的功能對于來用戶來說是清晰易懂的。
你也可以提供自定義的輸入輔助視圖,這種視圖通常表現(xiàn)為顯示在鍵盤(或你的自定義輸入頁面)上方的一個(gè)獨(dú)立元素。例如,在某些情境中,Numbers會顯示一個(gè)輸入輔助視圖用以幫助用戶執(zhí)行針對電子表格中的值的標(biāo)準(zhǔn)或自定義計(jì)算。
當(dāng)用戶在你的輸入頁面中敲擊自定義控件時(shí),使用標(biāo)準(zhǔn)的鍵盤敲擊聲提供聲音反饋。欲了解在代碼中如何使用這一聲音,參見UIDevice Class Reference文件中的playInputClick章節(jié)
注意:標(biāo)準(zhǔn)的敲擊音效只適用于當(dāng)前屏幕上的自定義輸入頁面。人們可以在設(shè)置-聲音中關(guān)閉所有的鍵盤音效——包括你的自定義輸入頁面中的那些。
英文原文訪問地址:iOS Human Interface Guidelines (iOS Technologies)
中文翻譯PDF下載:iOS人機(jī)界面指南(三):iOS技術(shù)
原文來自: 騰訊ISUX
- 目前還沒評論,等你發(fā)揮!