在我的應用程序的主窗口中,我有一個集合視圖,每個集合視圖項目都包含一個NSTableView。此窗口的窗口控制器具有NSString *
屬性projecttitle
。該屬性綁定到窗口中的NSTextField,我已經覆蓋默認的返回鍵行爲,以便用戶可以按回車鍵並將回車寫入文本字段。
現在,在更改文本字段中的字符串,然後在兩個不同的集合視圖項目的表視圖之間拖動項目後,項目標題屬性變爲
。我覺得可能我在這裏發生的事情太多了,而且這個bug也不可能追蹤到,但是也許有人看到了一些甚至與其他地方的這種行爲類似的東西?在nscollectionview中的nstableviews之間拖放設置窗口控制器屬性爲零?nil
編輯:放置在projecttitle屬性斷點似乎沒有產生任何有用的東西。程序執行在拖放時不會中斷,但是在此之後,屬性確實是零。
編輯2:經過更多的挖掘,它看起來行爲與NSFormatter對象有關。它不僅發生在拖放時,而且顯然任何時候nstextfield都會嘗試作爲響應者辭職。當我斷開IB中的格式化程序對象時,此行爲會停止。以下是格式化程序的字符串驗證碼,它強制字符串長度小於或等於4行,每行不超過32個字符。在實際輸入文本字段時,這似乎工作得很好,但顯然,不是在之後。
-(BOOL)isPartialStringValid:(NSString **)partialStringPtr
proposedSelectedRange:(NSRangePointer)proposedSelRangePtr
originalString:(NSString *)origString
originalSelectedRange:(NSRange)origSelRange
errorDescription:(NSString **)error {
NSArray * lines = [*partialStringPtr componentsSeparatedByString:@"\n"];
if ([lines count] > 4) {
return NO;
}
for (NSString * line in lines) {
if ([line length] > self.maxlength) {
return NO;
}
}
return YES;
}
顯然,我養成了回答自己的問題的習慣。 – Sean 2011-05-26 15:53:13