【问题标题】:NSTextField becomeFirstResponder not work in awakeFromNibNSTextField becomeFirstResponder 在 awakeFromNib 中不起作用
【发布时间】:2012-09-17 08:34:19
【问题描述】:

我想在表单加载时设置焦点,但它在 awakeFromNib 中不起作用。

[myTextField becomeFirstResponder];

【问题讨论】:

  • 您是否在稍后调用的委托方法中尝试过,例如viewDidLoadviewWillAppear
  • 你能发布你的其余代码,并检查 myTextField 是否为 nil 吗?现在您在报告一般问题时没有足够的代码。

标签: objective-c ios cocoa


【解决方案1】:

只是引用apple docs

Use the NSWindow makeFirstResponder: method, not this method, to make an object the first responder. Never invoke this method directly.

改为这样做:

[[myTextField window] makeFirstResponder:myTextField];

【讨论】:

  • 然后通过 NSLogging 检查 myTextField 是否为 nil,然后再将其设为第一响应者 `NSLog(@"%@", myTextField);
  • 有效。似乎可以在 viewDidLoad 或 viewDidAppear 控制器方法中工作。 @user1628083 应该被接受。
【解决方案2】:

这个问题的 Swift 版本:

textField.window?.makeFirstResponder(textField)

【讨论】:

    【解决方案3】:
    - (BOOL) becomeFirstResponder
     {
     if (someCondition)
     {
         return NO;
     }
    
     BOOL retVal = [super becomeFirstResponder];
    
     // do your stuff
     return retVal;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多