2011-02-05 53 views
7

儘管存在Human Interface Guidelines文檔(HIG),但許多高質量的Mac桌面應用程序都使用自定義控件。我的問題是啓動Cocoa開發的子類化控制的最佳方法是什麼?令我驚訝的是,這個主題上的信息很少(好)。最好遵循什麼樣的路線,所以你最終不會得到一個很好的但是一半的控制權?高效地繼承標準Cocoa控件

回答

32

這裏有一個清單:

  • 確保你的控制工作正常的雙倍分辨率。使用Quartz Debug來測試這個。您需要測試繪圖的完整性(在所有狀態 - 正常,選中,按下,禁用和其他任何狀態)和操作的完整性(即測試匹配顯示在屏幕/其他目標設備上的東西)。
  • 要獲得額外的功勞,請確保您的控件在1.5(或其他類似非整數)分辨率下正常工作。
  • 測試單擊時標準控件的工作方式。無論如何你可能會這樣做。像標準控制一樣。
  • 測試標準控件在半按下時的工作方式(鼠標向下,鼠標向外)。
  • 測試標準控件在黑暗點擊(鼠標向下,鼠標在裏面)時的工作方式。
  • 測試標準控件在被拖入時的工作方式。
  • 使用其他鼠標按鈕(右側和中間)測試以上四項。
  • 測試當您使用滾輪滾動時標準控件執行的操作。還可以測試shift +滾動,並在帶有鼠標的鼠標上(例如,大多數羅技鼠標)滾動左/右按鈕。
  • 測試標準控件在每個軸和兩個軸上的雙指滾動時的功能。
  • 測試標準控件在夾緊和鬆開時的功能。
  • 測試在每個軸上用三根和四根手指滑動時標準控件執行的操作。
  • 測試標準控件在打開「全鍵盤訪問」時的工作方式。你能看到它嗎?你可以用空格鍵按下它嗎?你能用回車鍵輸入嗎?你能擺脫它嗎?
  • 測試標準控件如何響應輔助功能查詢。使用輔助功能檢查器。有關響應控件中的輔助功能查詢和消息的信息,請參見Accessibility Programming Guidelines for Cocoa
  • 在VoiceOver中測試您的應用程序 - 包括但不限於您的自定義控件。盲目自己並嘗試單獨使用VoiceOver的應用程序。
  • 如果適用,測試打印您的視圖。如果您不想爲開發過程殺死一棵樹,您可以打印到預覽。
  • 以其他紙張尺寸進行測試打印。如果你在美國,測試A4;否則,測試美國信函。如果感覺徹底,請再測試一下其他尺寸的紙張(如Legal和A3)。
  • 如果您正在實施滾動器(poor you),請測試您的滾動器是否正確響應「跳轉到系統偏好設置」中「外觀」窗格中的「(下一頁|點擊點擊)」首選項。 「正確」意味着它應該做用戶選擇的內容。
  • 確保它正確實現了所有四個滾動箭頭位置設置:One at each end (Mac style), both at the lower/left end (NeXT style), both at the upper/right end, and both at each end (power user style).一如既往,您需要正確繪製並正確測試/正確反應。(建議by @radiofreelunch/by David Dunham
  • 此外,如果您正在實施滾動器,請確保它正確響應「平滑滾動」首選項。
  • 測試它是否正確響應不同的滾動速度首選項。
  • 如果您正在實現某種類型的文本輸入字段或響應某種特殊熱鍵的任何視圖(如Enter在輸入行中發送消息),請從右向左測試(希伯來語/阿拉伯語)文本輸入和備用輸入法。字符查看器是一個好的開始。
  • 此外,測試你不會打破CTRL-Q。例如,ctrl-q,標籤應該總是輸入一個製表符。通常用於選項+(鍵),例如輸入行中的選項返回。
  • 測試它是否正確響應不同的密鑰重複首選項。
  • 如果使用Cocoa標準菜單快捷鍵處理以外的方式實現任何自定義鍵盤快捷鍵(⌘+零個或多個其他修改鍵+一個或多個字符鍵),請在Dvorak下測試您的自定義快捷鍵行爲。有沒有更快的方式來酸化我們對你的應用程序的看法,而不是通過退出來響應⌘。
  • 向以前從未使用過它的用戶展示過你的應用,之前也沒有看過任何模型。取消程序員資格。如果他們不認可你的控制(不管它應該是什麼),重新設計它。如果您曾經說過「滾動條在此結束」或「您需要點擊該滾動條」,您會立即失敗。
  • 測試當您的應用在後臺時,您的控件響應(或不響應,如果響應會很危險)。 (Suggested by @chucker.
  • 測試您的控件是否響應,但不會將應用程序轉發,當您的應用程序位於後臺並且用戶使用⌘鍵向下單擊時。 (Suggested by @chucker.
  • 測試您的視圖的大小。除此之外,這將確保您正確設置自動調整大小的掩碼。您還在尋找繪製錯誤 - 扭曲元素,間隙等(此suggested by @Bagelturf的一部分)。
  • 如果您的控件實際上是控件,請將其發送給sizeToFit並確保其正確。 (Suggested by @Bagelturf.
  • 如果使用鼠標座標,不要認爲它們是整數。確保您正確處理分數,零(正數和負數)和負數。 (部分suggested by @Bagelturf。)
  • 您可能還會考慮將您的控件分解爲控件和單元格。在後一種情況下,還可以對嵌入NSMatrix和NSTableColumn中的單元執行所有這些測試。
  • 如果您的控件有一個菜單,請測試控件位於屏幕的一個或多個邊緣時會發生的情況。菜單應該移到屏幕空間之外。
  • 如果您的控件有一個菜單,請在使用「全鍵盤訪問」時測試用戶可以使用向下箭頭鍵輸入它。如果它也是一個文本字段(如組合框),測試這隻發生在用戶按下文本末尾的向下箭頭時;否則,正常的文本字段行爲應該規則:按下不是最後一行的行應該將光標向下移動一行,並且按下最後一行應該移動到行的末尾。
  • 如果您的控件有一個菜單,請測試它在點擊時保持打開狀態,並在打開時不會立即關閉。 There is a function you can use to do this correctlyit is available in 64-bit
  • 如果您的控件有一個菜單,請使用鍵盤測試它是否可導航(全部四個箭頭鍵+ Home,End,Page Up,Page Down),可用(空格鍵/返回按鍵動作)和可取消鍵(esc)。
+0

哇。 Peter非常感謝,抽出時間寫下來。這將會非常有用。非常感謝! – 2011-02-06 11:34:18

+0

不錯的一個!感謝您的全面清單 – Jay 2012-10-30 13:51:55

3

很難向Peter的列表添加任何內容,但是如果您正在執行滾動條,請確保它處理滾動箭頭的所有異常位置(如DoubleBoth)。