我子類的NSTextField和覆蓋textDidChange:爲:如何正確覆蓋textDidChange:方法?
- (void)textDidChange:(NSNotification *)notification
{
// ... My own operation
}
但是,當我拖動一個文本輸入框到我的.xib
文件和調速拖動另一個類來分配,我發現委託的controlTextDidChange:
方法的委託從未被召喚過。
現在要來試圖解決這個問題,我嘗試了兩種方式下面人:
一叫super
:
- (void)textDidChange:(NSNotification *)notification
{
// ... My own operation
[super textDidChange:notification];
}
但我得到了在運行時出現錯誤:嘗試從對象[插入零對象0]
II。打電話delegate
的方法
- (void)textDidChange:(NSNotification *)notification
{
// ... My own operation
if ([self.delegate responseToSelector:@selector(controlTextDidChange:)])
{
[self.delegate ...]; // <--- Opps, something not happerned here.
}
}
什麼沒有happerned?我預計自動完成應在上面的位置...
處顯示controlTextDidChange:
方法。但事實並非如此。我直接鍵入方法,編譯失敗,因爲找不到方法。
我該如何讓我的子類正常地調用委託?我應該如何正確覆蓋textDidChange:
方法?
爲維陶塔斯進一步的問題:
- 我相信我是用
NSTextField
。我在controlTextDidChange:方法中設置了一個斷點。正如它所說的,我應該知道。 - 我沒有控制拖動文本字段的委託對象,而我打印的
textDidChange:
方法委託對象,這是確保委派設置正確。 - 正確調用其他代表方法,例如
controlTextDidBeginEditing:
。但controlTextDidChange:
不叫 - 我試過評論覆蓋
NSTextField
類的覆蓋,然後controlTextDidChange:
被調用。 - 因此我確定我不會覆蓋
textDidChange:
的權利。但我不知道如何解決它。 - 是什麼讓我困惑主要是,爲什麼自動完成並沒有表現出
controlTextDidChange:
方法時我試圖把它。
關於自動完成,在這裏是如何顯示:
http://i44.tinypic.com/11rxh5f.jpg
沒有- controlTextDidChange:
方法。對於維陶塔斯
第二進一步答覆:
我打過電話 '[自我controlTextDidChange]',但它沒有工作,且發生錯誤(如下高亮): http://oi41.tinypic.com/9i9pmx.jpg
你是否檢查該委託聲明的任何必要的委託協議的替代方法? – uchuugaka
是的。我很確定,不管這個代表如何。自動完成在'responseToSelector:'方法中爲我填充'controlTextDidChange',但是我不能直接將它調用爲'[self.delegate controlTextDidChange:notification];'的格式。 –