【问题标题】:Subclassed text field and token field don't show cursor子类文本字段和标记字段不显示光标
【发布时间】:2012-08-06 04:21:54
【问题描述】:

如果我继承 NSTokenField 或 NSTextField 并覆盖 becomeFirstResponder(为了在控件成为第一响应者时执行一些代码),当字段成为第一响应者时(如焦点环和日志所示),光标不会t出现。

-(BOOL)becomeFirstResponder {
    // call other code here
    NSLog(@"%@",[self.superview.window firstResponder]);
    return YES;
}

既然这个方法默认实现返回YES,为什么这样重写会导致控件不显示光标。

【问题讨论】:

    标签: objective-c cocoa nstextfield


    【解决方案1】:

    您必须致电[super becomeFirstResponder]。覆盖它会中断调用链。在super 中的某处是一个调用,调用一个为你显示光标的调用。

    注意:如果你调用了super方法,你必须返回它的返回值。所以你的方法看起来像:

    - (BOOL) becomeFirstResponder {
         if (someCondition) {
             return NO;
         }
         BOOL retVal = [super becomeFirstResponder];
         // do your stuff
         return retVal;
    }
    

    【讨论】:

    • 谢谢,这应该很明显,但我完全错过了。
    • 这一点都不明显,这要归功于 Xcode,它不会自动为您填写。
    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2022-06-27
    • 2021-04-02
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多