【问题标题】:How do I set the firstresponder?如何设置第一响应者?
【发布时间】:2009-09-14 16:56:04
【问题描述】:

我有一个通过 IB 构建的视图,上面有一个文本视图和按钮。当视图显示时,我希望键盘已经显示。

我尝试在 didViewLoad 中设置第一响应者,但没有成功。

我确实有一个连接到 textView 和相关访问器的 IBOutlet。

【问题讨论】:

标签: objective-c cocoa-touch iphone-sdk-3.0


【解决方案1】:

看起来您可能不小心拼错了方法名称 didViewLoad 而不是 viewDidLoad。您所需要的一切(假设您的 IBOutlet 已在 IB 中连接)如下:

[textView becomeFirstResponder];

【讨论】:

  • 应该是[textView.window makeFirstResponder:textView];
  • @voidref 如果问题是关于 Cocoa 的,那你是对的,但事实并非如此,而是关于 Cocoa touch。 UIWindow 中没有 makeFirstResponder: 方法。
【解决方案2】:

我知道它被标记为 cocoa-touch,但它在 Google 中的排名很高,我在 OS X 上使用 -becomeFirstResponder 时遇到了麻烦;它什么也没做。来自NSResponder 文档,

使用 NSWindow makeFirstResponder: 方法,而不是这个方法,使对象成为第一响应者。切勿直接调用此方法。

所以在 OS X 上使用,

[[myView window] makeFirstResponder:myView];

【讨论】:

  • 如果您使用的是 IB,NSWindow 有一个 initialFirstResponder 插座,允许您连接一个视图,该视图将是第一次在屏幕上绘制窗口时的第一响应者。
【解决方案3】:

对于斯威夫特

textView.becomeFirstResponder()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多