本次教學目標:
操作環境:
OS X Version 10.9.1
Xcode Version 5.1 (5B130a)
有時候我們會讓程式執行一段時間很長的任務,如下載檔案,這時候如果能夠讓程式在完成任務的時候能夠通知使用者,使用者便能放心的去做其他事情。在本次教學中會使用 NSUserNotification 來做本地通知,並使用 NSTimer 來模擬長時間的任務。
- 學會如何使用 NSSlider
- 學會如何使用 NSUserNotification 通知
操作環境:
OS X Version 10.9.1
Xcode Version 5.1 (5B130a)
有時候我們會讓程式執行一段時間很長的任務,如下載檔案,這時候如果能夠讓程式在完成任務的時候能夠通知使用者,使用者便能放心的去做其他事情。在本次教學中會使用 NSUserNotification 來做本地通知,並使用 NSTimer 來模擬長時間的任務。
建立 OS X Application 專案
新增 MainWindowController,整理專案結構如下:
設計版面(layout)
Slider 的屬性調整如下:
Tick Marks: Position Below, 11
勾選 Only stop on tick marks
value: 0~10, current:5
以上的設定限制了 Slider 的數值範圍,最小為0,最大為10。
除此之外我們加上了 tick marks,並讓指標只停在 tick marks上,我們並設置tick marks的數量為 11,正好是對應到0~10,所以不管使用者如何調整 Slider 的指標,都不會取得像 3.3 這樣的數值出現。
Tick Marks: Position Below, 11
勾選 Only stop on tick marks
value: 0~10, current:5
以上的設定限制了 Slider 的數值範圍,最小為0,最大為10。
除此之外我們加上了 tick marks,並讓指標只停在 tick marks上,我們並設置tick marks的數量為 11,正好是對應到0~10,所以不管使用者如何調整 Slider 的指標,都不會取得像 3.3 這樣的數值出現。
編寫邏輯
接下來將開始編寫程式碼了。
本次教學利用 NSTimer 模擬長時間的任務,以程式視窗中的 TimeInterval 的數值作為延遲時間。
按鈕作為執行的開關,按下之後,就會鎖定視窗中輸入的資料,直到再次按下按鈕取消執行,或是成功發出了通知。
bearAppDelegate.h/.m 請參考 OSX APP 教學 Part2-Timer
以下是 MainWindowController 類別的相關程式碼:
MainWindowController.h
本次教學利用 NSTimer 模擬長時間的任務,以程式視窗中的 TimeInterval 的數值作為延遲時間。
按鈕作為執行的開關,按下之後,就會鎖定視窗中輸入的資料,直到再次按下按鈕取消執行,或是成功發出了通知。
bearAppDelegate.h/.m 請參考 OSX APP 教學 Part2-Timer
以下是 MainWindowController 類別的相關程式碼:
MainWindowController.h
MainWindowController.m
連接元件
測試結果
接下來測試一下完成的程式。
按下鍵盤上的 Command + Shift + K,清除專案之前編譯的檔案。
按下鍵盤上的 Command + R,編譯並執行程式。
按下鍵盤上的 Command + Shift + K,清除專案之前編譯的檔案。
按下鍵盤上的 Command + R,編譯並執行程式。
如果程式正在前景的主動狀態(就是使用者正在操作),那麼就不會彈出通知,而只是記錄在通知中心的列表上。
後續討論
參考
NSUserNotification Class Reference
NSSlider Class Reference
Mountain Lion: The New Notifications (Center)
喜歡這篇文章嗎? 趕快加入Takobear粉絲團吧!
NSSlider Class Reference
Mountain Lion: The New Notifications (Center)
喜歡這篇文章嗎? 趕快加入Takobear粉絲團吧!