问题标签 [uiresponder]

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 投票
0 回答
263 浏览

cocoa-touch - InputAccessoryView 按钮触摸事件触发附件视图下视图的期望事件加事件

我有一个带按钮的输入附件视图。当键盘出现时,输入附件视图覆盖了另一个启用触摸的视图。按钮不仅触发了所需的事件处理程序,而且还触发了它下面的视图的事件处理程序,这是不希望的。

我想我已经在某处读过有关触摸事件如何做到这一点并且可以停止的信息。现在,我不知道要搜索的术语。

0 投票
2 回答
2387 浏览

iphone - 同级子视图在 iPhone 中不接收触摸

我有一个带有两个子视图的视图 ( ),一个在另一个 ( ) 的parent顶部 ( )。topChildbottomChild

如果我只点击屏幕topChildparent接收触摸事件。

我应该改变什么来传播触摸事件bottomChild

编码:

仅记录MYView的子类在哪里。UIViewtouchesBegan

结果:

在此处输入图像描述

触摸绿色区域会产生以下日志:

我的第一个想法是将所有呼叫parent传播给它的孩子,但是(A)我怀疑可能有一个更简单的解决方案,并且(B)我不知道哪个孩子将事件发送给父母,并且两次向同一个视图发送消息可能会引起恶作剧。touchesSomethingtouchesSomething

在提出问题后,我发现这篇文章建议覆盖hitTest以更改接收触摸的视图。如果可行,我将尝试这种方法并更新问题。

0 投票
2 回答
1564 浏览

objective-c - 如果通过附件视图添加到 UITableViewCell,UITextField 无法成为第一响应者

像许多其他用户一样,我正在尝试将 UITextField 设置为 UITableViewCell 以用于编辑行。但我没有添加新视图,而是尝试使用附件视图属性。一开始我试过这个...

...并且 UITextField 已正确添加,但我需要再次点击它才能显示键盘。但是,如果我这样做...

...它可以工作,键盘出现了,但是,我没有得到将它作为附件视图的任何其他好处(更容易定位,其他视图在它周围移动)。我想 addSubview: 调用正在改变响应者链或其他东西,并允许我的 UITextField 成为第一响应者,但认为也许有另一种方法可以让我设置单元格的附件视图。谢谢。

0 投票
1 回答
332 浏览

iphone - 获取 UIScrollView 上的 UIResponder 实例方法。苹果手机

在我正在处理的当前项目中,在其中一个视图上,我有一个UIView和在它之上,它UIScrollView是从界面构建器构建的。

我已经实现了以下UIResponder实例方法:

但是只有当触摸事件发生在未被覆盖的区域时,控件才会使用此方法UIScrollView

我怎样才能获得触摸事件UIScrollView呢?

0 投票
1 回答
904 浏览

iphone - 编辑时尝试使用 UITextField 制作自定义 UITableViewCell becomeFirstResponder

我有一个UITableViewControllerwith custom UITableViewCell,其中包含一个UITextField. 将表格视图切换到编辑模式时,我在表格底部添加了一个新单元格,并希望制作这个单元格becomeFirstResponder。我的tableView:cellForRowAtIndexPath:方法检查这个底部单元格,所以我只添加了以下行:

[cell.theTextField 成为FirstResponder];

我认为这应该有效。但是,当第一次显示表格视图时,它似乎不起作用。但是,如果我选择单元格(使其成为第一响应者),然后退出编辑模式(resignFirstResponder在我的代码中导致 a),然后我可以返回编辑模式并神奇地成为我所期望的第一响应者!

请注意,即使我选择了不同的单元格(它们都有文本字段)结束编辑模式并退出编辑模式,然后重新进入,它仍然可以工作,只要在某个时候我已经制作了最后一个单元格becomeFirstResponder(通过选择它)。

所以,我的猜测是,当它第一次成为第一响应者时,会在表格视图或其他最初没有设置的地方设置一些东西,从那时起它就可以工作了。

有人对这里可能发生的事情有任何想法吗?

0 投票
1 回答
1070 浏览

objective-c - touchesBegan 在 uiresponder 的子类中被忽略

使用目标 c 并使用 xcode 开发 ios 应用程序。我有一个类继承自另一个继承自 UIResponder 的类,它包含一个视图。我在子类中有一个 touchesBegan,但只有在调试/开发模式下运行应用程序时才会调用该事件。当我进行生产/发布构建时,不会调用触摸事件。

在 mysubviewcontroller 类中我有

现在正如我所说,在调试中运行它很好,但在发布中忽略了触摸事件。请说任何有助于澄清这一点的提示、想法或问题。提前致谢

编辑:我在文档中看到了这一点“如果您在不调用 super 的情况下覆盖此方法(一种常见的使用模式),您还必须覆盖处理触摸事件的其他方法,如果只是作为存根(empy)实现。” 所以我在所有其他触摸事件中存根,但发布版本没有变化

0 投票
2 回答
404 浏览

iphone - 为 UIResponder 添加两个监听器

我在 UIWindow 中添加了两个视图控制器作为子视图。现在的问题是视图之一得到视图旋转调用,但第二个是没有得到视图改变方向的调用。现在我的问题是我们如何获得对 UIWindow 中添加的两个不同视图控制器的更改方向调用。

0 投票
2 回答
151 浏览

objective-c - 关于在 View 上向 UIButton 添加目标的 MVC 实践

在自定义视图上向 UIButton 添加目标时,我有一个关于最佳实践的问题。目前,我在我的视图的加载方法中创建我的 UIButton,并将我的视图分配为按钮目标。我的观点是在按下按钮时处理逻辑,我突然想到这不是好的 MVC。

所以,我宁愿让我的控制器提供自己作为按钮的目标和动作,但是我不确定实现这一点的最佳方法。

视图可以使用对控制器的引用进行初始化,或者可以使用 UIResponder 的 nextresponder 获取控制器,并使用此引用设置目标。但是,这可能会导致循环保留,并且需要我的视图了解我的控制器上存在的方法,这比我希望的更紧密耦合。

或者,我可以为视图上的每个 uibutton 创建一个设置器。但是,如果我有多个按钮,或者包含带有按钮的自定义子视图的视图,这很快就会变得笨拙。我还可以为每个按钮创建属性,但这也很笨拙,并且允许控制器访问超出其需要的内容(它只需要设置目标,不需要能够获得对按钮的任何引用)。

最后,我可以为控制器中的所有按钮创建和添加目标,并在初始化时将其传递给视图,但这似乎也违反了 MVC 的角色。

似乎这是一种常见的情况,这些做法是否被认为是标准的,还是有更好的解决方案?

0 投票
1 回答
940 浏览

objective-c - 为什么我的子类 UItableView 不滚动?

我正在编写一个 iOS 5 应用程序(在 Xcode 4.3 中,使用 Storyboards 和 ARC),它有一些需要响应水平平移的表格单元格。我有一个工作得很好的表格设置,但是我需要在另一个场景中实现相同的行为。我认为最佳实践方法是将手势识别和处理代码抽象到子类中。但是现在tableView不会滚动了,我在旧方法下针对这个问题的解决方案也没有帮助。

我有一个RestaurantViewController继承自UIViewController并拥有一个属性ULPanningTableView *tableView。一些表格的单元格是MenuItemCells 并继承自 ULPanningTableViewCell。表的委托和数据源是RestaurantViewController.

ULPanningTableViewCell继承自原始版本UITableViewCell并且非常接近原始版本,唯一的区别是它具有跟踪单元格的正面和背面视图以及自定义背景的属性。

ULPanningTableView有点复杂,因为它必须设置识别和处理。

ULPanningTableView.h

ULPanningTableView.m

我玩过gestureRecognizerShouldBegin:,因为当这些不是单独的类时,我就是这样解决这个问题的(ULPanningTableView东西是在里面实现的RestaurantViewControllerULPanningTableViewCell东西是在里面实现的。对于垂直多于水平MenuItemCell的手势,我基本上会返回 NO ) translationInView. 无论如何,我无法让表格滚动!gestureRecognizerShouldBegin:如果我从 返回 YES或完全删除实现,我可以识别平移手势UIGestureRecognizerDelegate

我仍然是 iOS 和 Objective-C 的初学者,所以我只有基于我读过的东西的预感,而且我对类似问题的印象是罪魁祸首正在UIScrollViewPanGestureRecognizer对响应者链进行巫术。 ..

我将非常感谢您对此有所了解!

0 投票
3 回答
463 浏览

iphone - iOS 识别触摸但不拦截

我有一个我正在展示的观点。该视图与 UITableView 出现在同一屏幕上。当触摸屏幕上的任何位置时,我想关闭视图,但我不想阻止该触摸到达其目标。例如,如果用户去滚动表格视图或选择一个单元格或任何东西 - 我想知道这样我可以关闭视图,但我希望用户触摸的任何东西都能像往常一样做出反应。任何帮助都会很棒。