怎樣限制 Mac OS X 表格中編輯區中的輸入字數

這篇文字來自 22 日晚間我在台北 Cocoaheads 活動中所分享的一個題目。

在講完之後,有些朋友覺得講得速度似乎有點快,而我回來之後看了一下自己的投影片,總感覺如果只是將投影片放在網路上,可能根本不知道我在說什麼,而更大的問題是,回來之後又做了一點小研究,發現有個地方講錯。看來,要在網路上分享這則故事,還是要換成比較詳盡的文字。

楔子

故事是這樣的。

一兩個月前,公司正在承接製作國內某知名輸入法廠商的 Mac OS X 版本的工作,專案的其中一環,是要製作一個使用表格輸入介面的自定字詞編輯工具-基本上就是在主視窗當中有一個表格,第一欄是自定詞的拆碼(或字根),第二欄則是這組拆碼所對應到的字詞。-當你在使用 Cocoa Framework 開發的時候,要使用表格介面,你當然會毫不猶疑的使用 NSTableView 物件。

因為這套輸入法的規則是,所有文字的打法最大只會有五碼,所以,在輸入或修改拆碼這個欄位的時候,如果使用者已經打了五個字元,就不應該繼續輸入。這件事情在 Windows 上面很簡單-如果你是寫一個 .Net 程式,你只要寫上一行,設上 DataGridViewTextBoxColumn.MaxInputLength (MSDN 文件)就好了,還可以在 IDE 中直接使用 GUI 設定;但是,在 NSTableView 的文件中,則是完全找不到對應的設定。

另外,客戶也要求,在按下 Enter 的時候要寫入資料,按下 ESC 按鍵的時候,則是要取消編輯狀態。如果是在 Mac OS X 10.5 上面,用 Interface Builder 拉好了一個 NSTableView,基本上這個 table view 在編輯狀態時,按下 Enter 就會完成編輯,這是我們要的,然而,如果按下 ESC 按鍵,預設卻是出現 Auto-complete 選單,幫你做些英文拼寫檢查之類的;至於在 10.4 上面,則是無論按下 Enter 或是 ESC,都不會理你…。

顯然在這個部分,也需要對 NSTableView 做一定的客製。

Continue reading

Mondrianum 2 以及新的 Adobe kuler API

Mondrianum 2

我們今天推出了 Mondrianum 2.0 beta 1(下載)。

自從年初推出第一個版本的 Mondrianum 以來,一直到現在,其實之間並沒有多少的開發進度。主要原因是,在我們推出之後,就收到 Adobe 之後會修改 kuler API 的消息-既然 API 會修改,那麼 client 如果繼續實作其他功能,很有可能最後變成做白工;而 Adobe 修改 API,我們也就花了一些時間等,而 Adobe 終於改完了 API,我們也就終於有辦法做新的版本。

2.0 beta 1 這個版本主要在於使用新版的 kuler API,功能方面,還是基本上延續前一個版本的功能;不過,如果您之前便已經在使用 Mondrianum,您還是有更新到新版本的必要。Adobe 將會在本月 15 日終止舊版的 kuler API 服務,換言之,舊版的 Mondrianum 也會因此同時失效。

因為使用 kuler API,Mondrianum 2 多了一個新功能,便是以色找色。也就是,您可以直接輸入一組 RGB 顏色的 HEX code,例如您想要找橘色,知道這個顏色的 Hex code 是 FF9933,便可以在 kuler 服務中找到有這個顏色的配色設計組合。在 Mondrianum 中,則可以直接幫您將目前的顏色轉換成 HEX code,再自動搜尋。

新版的 kuler API 與舊版的另一個差異,在於提供分頁瀏覽。一如 kuler 網站目前的設計,在選擇某個瀏覽的分類(最新色票、最受歡迎的色票、最高分的色票、隨機色票)後,之前只能夠瀏覽第一頁的若干筆資料,現在則可以用前後箭頭繼續瀏覽排名較後面的色票。

不過,在 Mondrianum 中我們還沒有這方面的對應實作,因為,就一個快速選擇顏色的 color picker 而言,想不太出來像是「最高分的第十萬名的配色」的意義究竟何在…。

Continue reading