问题标签 [first-responder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
777 浏览

objective-c - 试图理解 nibs 中的 First Responder 对象

让我简短地总结一下:nib 文件中的“First Responder”是一个对象,它表示具有用户焦点的 UI 控件元素。因此,如果用户单击一个控件,nib 会将单击的 UI 控件设置为 First Responder。在我的应用程序中,我可以从笔尖向那个“急救人员”提供一个出口,这样我就可以向用户通过点击激活的任何内容发送一条消息“制作红色字体颜色”。

然后,如果此 First Responder UI 控件不理解该消息,则该消息将在响应者链中向上传递,直到父元素或祖父(等等)UI 控件元素理解该消息。否则会被忽略。

因此,First Responder 总是建立一个指向具有焦点的 UI 控件的“链接”。那正确吗?

( “First Responder”的完全相同的副本- 我没听错吗?由同一作者)

0 投票
4 回答
22367 浏览

objective-c - “First Responder”——我说对了吗?

让我简短地总结一下:nib 文件中的“First Responder”是一个对象,它表示具有用户焦点的 UI 控件元素。因此,如果用户单击一个控件,nib 会将单击的 UI 控件设置为 First Responder。在我的应用程序中,我可以从笔尖向那个“急救人员”提供一个出口,这样我就可以向用户通过点击激活的任何内容发送一条消息“制作红色字体颜色”。

然后,如果此 First Responder UI 控件不理解该消息,则该消息将在响应者链中向上传递,直到父元素或祖父(等等)UI 控件元素理解该消息。否则会被忽略。

因此,First Responder 总是建立一个指向具有焦点的 UI 控件的“链接”。是对的吗?

0 投票
2 回答
38390 浏览

iphone - UiTextField 和 resignFirstResponder

我有一个奇怪的设置。

我有一个ViewView1和一个ViewControllerviewController1

在中IBView1ViewController1的子项。

View1中,我使用代码 a 创建UITextField并添加为子视图。

在我的Viewcontroller,我有viewController1 : UIViewController <UITextFieldDelegate>

现在.. 当View1中的文本字段在键盘上获得“完成”按钮时,我想辞职键盘,所以我有

现在的问题是,如何在 TEXTFIELD(在我的视图控制器中定义)和在我的视图中定义的文本字段之间建立连接?

我必须在 interfaceBuilder 中做些什么吗?

也许我完全不在这儿了……

一些提示非常感谢

0 投票
1 回答
746 浏览

cocoa-touch - 哪个应该是第一响应者:我的视图还是 UIDatePicker?

我正在创建 的兄弟姐妹UITextField,但UIDatePicker不是使用键盘。

我希望多个这样的控件能够很好地相互配合,并且也是标准UITextField的(即,当我的控件被激活时,将键盘交换为日期选择器,并在激活文本字段时隐藏日期选择器)。

让我感到困惑的一件事是处理第一响应者的状态。UIDatePicker似乎没有要求成为第一响应者。应该是?当我自己的控件被要求辞去第一响应者时,我可以依靠它不成为第一响应者并隐藏日期选择器吗?

我应该将UIDatePicker(或其他任何东西)设置为我的控件nextResponder吗?我不想处理任何事件,我只想确保我的控制在必要时窃取并放弃焦点。

(在这种情况下我没有使用笔尖)

0 投票
2 回答
1681 浏览

iphone - 带有 TextField 和第一响应者的自定义 TableViewCell

我有一个包含 TextField 的自定义 TableView 单元格,我希望它在视图显示后立即成为第一响应者,但 [textcell.textfield becomeFirstResponder] 不起作用。我知道这是因为它是另一个类中的自定义单元格,我什至在那里尝试过,但没有成功。有谁知道如何解决这个问题?

谢谢...

0 投票
2 回答
8740 浏览

iphone - 如何将第一响应者从一个 UIView“转移”到另一个?

我有一个 UIView 子类(CustomView出于这个问题的目的),它自己处理所有touches事件(开始、移动、结束、取消)。我也有一个与它重叠UIButton的兄弟。CustomView

例如,我的视图层次结构如下所示:

  • UIView(控制器的视图)
    • 带框架的自定义视图(0、0、300、300)
    • 带框架的 UIButton (0, 0, 100, 50)

一旦用户拖出 UIButton,我希望 CustomView 捕获触摸事件。通过调试日志,似乎该UIControlEventTouchDragExit事件是要拦截的事件(尽管直到触摸距离按钮大约 100 像素时它才会触发,但这对于这个问题并不重要)。

理想情况下,当拖动退出事件被触发时,按钮将停止接收触摸移动事件,CustomView 将收到一个touchesBegan事件(即使我需要以某种方式自己伪造一个),并且所有未来的触摸事件(touchesMoved等)都将发送到自定义视图。

我尝试了以下方法,但没有任何效果:

我认为底层UITouch对象(在触摸事件中是一致的)没有被重新定位为指向 CustomView。我怎样才能达到预期的效果?

0 投票
3 回答
2040 浏览

objective-c - 在视图控制器中处理发送给第一响应者的消息

我一定错过了一些简单的东西,但我看不到它。首先,设置:

  • DATreeView, 的一个子类NSView
  • DATreeViewController, 的一个子类NSViewController
  • MainMenu.xib有一个 的实例DATreeViewController,它被配置为从DATreeView.xib
  • MainMenu.xib还有一个 的实例DendreaAppDelegate,它有一个DATreeViewController插座(连接到MainMenu.xib' 的DATreeViewController实例。
  • Do Something!,一个连接起来的菜单项,用于向doSomething:第一响应者发送消息。
  • 并非巧合,DATreeViewController有一个动作叫doSomething:.

我想要的是Do Something!菜单项触发doSomething:操作DATreeViewController,让我们假设我不能直接设置目标/操作连接。我会在这里停下来问,我的设计完全错误吗?我正在尝试做的事情是愚蠢/邪恶/可能在我的上帝眼中让我感到羞耻吗?

不?伟大的。现在,对于我的生活,我无法让菜单项处于活动状态。我在 Snow Leopard 上这样做,如果这有什么不同的话。

为了实现NSView和之间的良好集成NSViewController,例如管理响应者链,我遵循了Matt Gallagher 的示例,进行了一项实质性更改:在 NIB 加载过程中NSView似乎没有收到setViewController:消息,所以我自己发送该消息DATreeViewControllerloadView讯息。据我所知,在运行以下代码后applicationDidFinishLaunching:

响应者链按预期设置,即:

我的期望是,作为DATreeViewController响应者链的一部分,作为响应者链的一部分,作为响应者doSomething:,并且因为它不实现验证,我所要做的就是使用 Interface Builder 将Do Something!菜单项连接到 First Responder 代理,doSomething:作为其操作,菜单项将自动激活。

我究竟做错了什么?感谢大家的宝贵帮助!

0 投票
2 回答
2006 浏览

objective-c - 如果另一个 NSControl 不处理它,则将事件发送到另一个 NSControl 下的 NSControl

我有多个叠加控件,可以在某些条件下处理鼠标单击。我想要做的是:

  1. 顶部控件接收 mouseDown:事件。
  2. 顶部控件决定它是否处理该mouseDown:事件。
  3. 如果确实如此,请执行某些操作并阻止其他控件接收该mouseDown:事件。
  4. 如果没有,则将事件发送到下面的控件。
  5. 此控件决定它是否处理该事件。
  6. 等等

本质上,我试图将事件发送到其“Z-Order”就在顶部控件下方的控件,而顶部控件不需要了解其他控件或在实例化时需要一些特殊设置。

我想到的第一件事是将事件发送到,[topControl nextResponder]但似乎nextResponder窗口上的所有控件都是窗口本身,而不是我之前认为的基于 Z-Order 的控件链。

有没有办法在不手动设置下一个响应者的情况下做到这一点?目标是获得一个独立于其他控件的控件,并且可以将其放在窗口上并按预期工作。

提前致谢!

0 投票
5 回答
70248 浏览

ios - 告诉 UITextField 在嵌入 UITableViewCell 时成为第一响应者

我有一个UITextField是 a 的子视图UITableViewCell

当我的视图加载时,我希望文本字段成为第一响应者。我有一个指向表格单元格中的文本字段的指针,所以我正在尝试这样做:

无论何时调用它,它都会一直返回NO,根据文档,这意味着文本字段拒绝成为第一响应者......我做错了什么?

编辑:

textfield正确响应被触摸。然后它会调出键盘。只有当它以becomefirstresponder编程方式告诉它问题发生时。

0 投票
28 回答
170599 浏览

objective-c - 在不使用私有 API 的情况下获取当前的第一响应者

一个多星期前我提交了我的应用程序,今天收到了可怕的拒绝电子邮件。它告诉我无法接受我的应用程序,因为我使用的是非公共 API;具体来说,它说,

应用程序中包含的非公共 API 是 firstResponder。

现在,有问题的 API 调用实际上是我在 SO 上找到的解决方案:

如何在屏幕上显示当前的第一响应者?我正在寻找一种不会让我的应用程序被拒绝的方法。