objective-c – NSViewController中的firstResponder

objective-c – NSViewController中的firstResponder,第1张

概述我有两节课. ManagingViewController,NSViewController的子类,以及ViewController,一个子类auf ManagingViewController.在Viewcontroller中,我有一个NSTextField,我想成为第一个响应者,但我没有管理它. 所以它几乎与Hillegass的书“Cocoa Programming for Mac OS X” 我有两节课. ManagingVIEwController,NSVIEwController的子类,以及VIEwController,一个子类auf ManagingVIEwController.在VIEwcontroller中,我有一个NSTextFIEld,我想成为第一个响应者,但我没有管理它.

所以它几乎与Hillegass的书“Cocoa Programming for Mac OS X”(Download of the book’s examples)中的第29章相同,只不过NSTextFIEld设置为firstResponder.

有人能指出我正确的方法吗?

解决方法 您需要使用 – [NSWindow makeFirstResponder:]将文本字段设置为第一个响应者.

由于这是一个NSWindow方法,因此只有在将相应视图添加到窗口后,即在将视图添加为窗口视图层次结构内的子视图之后,才有意义.在本书的示例中,当您将视图设置为窗口内框的内容视图时,会发生这种情况.例如:

- (voID)displayVIEwController:(ManagingVIEwController *vc) {    // Try to end editing    NSWindow *w = [Box window];    …    // Put the vIEw in the Box    NSVIEw *v = [vc vIEw];    [Box setContentVIEw:v];    // Set the first responder    if ([vc class] == [VIEwController class]) {        [w makeFirstResponder:[(VIEwController *)vc myTextFIEld]];    }}

这假定VIEwController公开了一个名为-myTextFIEld的getter方法.

通过让视图控制器公开一个返回视图控制器建议作为第一个响应者的对象的方法,可以使这更通用.就像是:

@interface ManagingVIEwController : NSVIEwController…- (NSResponder *)recommendedFirstResponder;@end@implementation ManagingVIEwController…- (NSResponder *)recommendedFirstResponder { return nil; }@end

并且,在您的ManagingVIEwController的具体子类中,让-recommendedFirstResponder返回应该是窗口的第一个响应者的对象:

@implementation VIEwController…- (NSResponder *)recommendedFirstResponder { return myTextFIEld; }@end

完成后,您可以将-displayVIEwController更改为:

- (voID)displayVIEwController:(ManagingVIEwController *vc) {    // Try to end editing    NSWindow *w = [Box window];    …    // Put the vIEw in the Box    NSVIEw *v = [vc vIEw];    [Box setContentVIEw:v];    // Set the first responder    NSResponder *recommendedResponder = [vc recommendedFirstResponder];    if (recommendedResponder) [w makeFirstResponder:recommendedResponder];}
总结

以上是内存溢出为你收集整理的objective-c – NSViewController中的firstResponder全部内容,希望文章能够帮你解决objective-c – NSViewController中的firstResponder所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1011894.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存