主要爲NSTextField的delegate設置和實現,
1. 在storyboard中要設置好NSTextField的delegate
2. 實現delegate方法
此處view controller是否繼承實現NSTextFieldDelegate都無關緊要, 這是因爲在NSControll中
將以下幾個方法用類目的方式, 添加到了NSObject內
@interface NSObject(NSControlSubclassNotifications)
- (void)controlTextDidBeginEditing:(NSNotification *)obj;
- (void)controlTextDidEndEditing:(NSNotification *)obj ;
- (void)controlTextDidChange:(NSNotification *)obj;
@end
所以, 只要設置了delegate連接, 實現這幾個方法即可
3. 這幾個方法獲取NSTextField最新輸入的內容:
NSTextField *tf = obj.object;
NSLog(@"text field:%@",tf.stringValue);
4. 如果在NSTableCellView中使用的NSTextField, 可通過tf來獲取到其NSTableRowView以及所在的column
NSTableCellView *cellView = (NSTableCellView *)[tf superview];
NSTableRowView *rowView = (NSTableRowView *)[cellView superview];
NSInteger row = [self.tableView rowForView: rowView];
// 檢查rowView在table view的第幾行, 從0開始
NSInteger col = [rowView.subviews indexOfObject: cellView]-1;
// 檢查當前的textField在第幾列
NSLog(@"obj:%lu = %lu = %@",row,col,tf.stringValue);
通過此方式, 可獲取到對text field的輸入/輸出內容動態監控