objective-c – 未从d出窗口调用NSTextView自动完成委托方法

objective-c – 未从d出窗口调用NSTextView自动完成委托方法,第1张

概述我以编程方式调用complete:调用NSTextView自动完成委托方法: - (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem 我以编程方式调用complete:调用NSTextVIEw自动完成委托方法:

- (NSArray *)control:(NSControl *)control textVIEw:(NSTextVIEw *)textVIEw completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index

我有2个表,一个在主表中,另一个在d出窗口中.d出窗口从工作表中以模态方式打开.

两个表都具有与NSTextVIEw相同的子类的列.
两个表都具有相同的文件所有者作为委托,但是仅为主表中的表调用委托方法.

奇怪的是,从d出窗口中的表中正确调用了所有其他委托方法:

- (BOol)control:(NSControl *)control textShouldEndEditing:(NSText *)fIEldEditor- (BOol)control:(NSControl *)control isValidobject:(ID)object- (BOol)tableVIEw:(NStableVIEw *)atableVIEw shouldEdittableColumn:(NStableColumn *)atableColumn row:(NSInteger)rowIndex

更新:

关于NStableVIEw结构:

这些表是基于单元格的NStableVIEw.该列由NSTextFIEldCell制作,我已经将其子类化.下面的代码来自子类NSTextFIEldCell.

该方法返回另一个子类,名为CBautocompleteTextFIEld,这次继承自NSTextVIEw,它是单元格内的文本编辑器.

- (NSTextVIEw *)fIEldEditorForVIEw:(NSVIEw *)aControlVIEw{    return [[[CBautocompleteTextFIEld alloc] init] autorelease];}

所以最后,类调用complete:是NSTextVIEw的子类.

解决方法 尝试这个,如果它有帮助,为了执行自动完成,你需要调用完成:在文本字段字段编辑器中使用下面的委托方法: –

- (voID)controlTextDIDChange:(NSNotification *)notification {    if( autoComplete ){        return;    } else {        autoComplete = YES;        [[[notification userInfo] objectForKey:@"NSFIEldEditor"] complete:nil];    }}
总结

以上是内存溢出为你收集整理的objective-c – 未从d出窗口调用NSTextView自动完成委托方法全部内容,希望文章能够帮你解决objective-c – 未从d出窗口调用NSTextView自动完成委托方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1009978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存