2011年11月7日 星期一

在黑暗中摸索--撰寫delegate

能學會撰寫delegate,要感謝CocoaHeads Taipei在Podcast的演講影片,
看過yllan的「如何用 Cocoa 為現有的 command-line 程式寫圖形介面」演講,以及
google到的用Xcode和Interface Builder寫delegate這篇文章後,跌跌撞撞也終於讓我搞懂了。

教訓一:寫完實作protocol的class,它會出現在IB的「Library」小視窗中(通常是藍色方塊)。
記得要手動把它拖到「MainMenu.xib」小視窗,才能玩連連看哦!
這個搞了我好久(哭哭)
按住control,滑鼠按住視覺元件並拖到小方塊上、放開滑鼠,選擇"delegate",就完成了。


接下來是實驗結果。
我實作NSTextViewDelegate的兩個method:

- (void)textDidChange:


- (BOOL)textView: doCommandBySelector

結論是,在text view中打任何字(含中英文及空白),會執行textDidChange。
而舉凡enter(return)、tab、shift-tab、Command-C、Ctrl-C等平常使用的「功能鍵」、「組合鍵」都會跑去執行textView: doCommandBySelector。

所以QS提供的特殊指令,例如按下"."進入純文字模式、按下","啟動comma trick、按下"~"切換到home、長按"/"切換到root等,都不能在textView: doCommandBySelector中處理。

沒有留言:

張貼留言