问题标签 [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 投票
1 回答
1510 浏览

objective-c - UIResponder 链题

我不太了解修改响应者链的细节,所以如果这是愚蠢的,请不要抨击我;)

基本上我有 2 个视图堆栈(蓝色)作为父视图(红色)的子视图

它们都在某个时间点占据了父级的整个框架,因此显然只有顶部的一个正在获取触摸事件,这些事件向上游传播到父视图(红色)并到达窗口。

在某些情况下,我希望“其他”视图堆栈的合格子视图拾取触摸输入。也就是说,如果当前最顶层视图的 userinteractionenabled 设置为 no,则该视图将接收这些输入。

设置 userinteractionenabled 有效,但我觉得它是一个肮脏的黑客。要点是这个 topmot 视图大部分是透明的,我希望在指定区域被触摸时的事件最终出现在另一个堆栈上。

这是一张帮助直观解释的图片,请记住,两个蓝色视图都是父视图的 100%。

http://c.crap.ps/35a5

0 投票
1 回答
314 浏览

iphone - iPhone - 暂时禁用键盘

G'day 全部

我的应用程序有一个首次运行组件,该组件显示登录/注册屏幕,成功登录/注册后将继续加载应用程序的数据。对于那些看过它的人来说,这个过程遵循与 Instagram 相似的风格。如果键盘在输入密码时被关闭并且出现错误,它会在它消失后立即弹回,这让我觉得它看起来不是很好。那么,在应用程序发送用户凭据并等待响应时,有什么方法可以禁用键盘或阻止用户交互而不实际关闭它?

干杯和 TIA,佩德罗 :)

0 投票
3 回答
196 浏览

cocoa-touch - 我正在使用以前的应用程序,但在 UIResponder.h 中出现错误

我正在使用以前开发人员的应用程序,但是当我编译它时,在 UIResponder.h 和 UIEvent.h 显示 5 个错误

错误1:

文件/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIEvent.h:38:0 /Developer/Platforms/iPhoneOS.platform/Developer/ SDKs/iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIEvent.h:38:错误:预期':'之前';' 令牌

错误2:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:15:0 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs /iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:15:错误:“UIResponder”之前的预期“)”

错误3:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:17:0 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs /iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:17:错误:在“-”标记之前需要“{”

错误4:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:42:0 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs /iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:42:警告:'@end'必须出现在@implementation上下文中

错误5:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:58:0 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs /iPhoneOS3.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIResponder.h:58:错误:找不到“UIResponder”的接口声明

0 投票
1 回答
1279 浏览

cocoa-touch - touchesEnded:withEvent: 来自 UIScrollView 第一响应者

我已将 UIScrollView 设为第一响应者。我需要-touchesEnded:withEvent:在它后面的视图上维护一个方法的触摸事件。我尝试过使用该-nextResponder方法,但失败了。我尝试转发-touchesEnded:withEvent:到它背后的视图,但失败了。

我怎样才能让它工作?UIScrollView 将无法工作,除非它是第一响应者或以其他方式获取事件。

感谢您的任何帮助。可耻的是,Apple 的文档和 API 在某些方面很糟糕。

0 投票
4 回答
14973 浏览

ios - 当父视图在 iOS 中将 userInteractionEnabled 设置为 NO 时如何进行触摸

当父视图的 userInteractionEnabled=NO 时,即使它们的 userInteractionEnabled 属性设置为 YES,它的子视图也不会接受触摸事件。

有没有办法在子视图中仍然获得触摸事件?

0 投票
2 回答
1793 浏览

iphone - UIGesture 在 IOS 中因未知原因失败

我有一个 UITextField,它是 UIScrollView 的子视图,我有一个单击手势(或者可能是较旧的触摸)作为 UITextField 的一部分,使其成为第一响应者。我想向 UITextField 添加双击手势。为了使两个手势互斥,我需要重载单击手势(尽管这不是正确的词,因为我没有使用相同的名称)。当我这样做时,只要它调用的函数不会使 UITextField 成为第一响应者,它就可以正常工作。如果它确实使文本字段成为第一响应者,它第二次被调用时失败.... wtf。所以堆栈,一点帮助会有很长的路要走。

这是我添加手势的地方

这就是它的名字

您可能会注意到将注册到 textField 的手势输出的 NSLog 这是为了检查我的 singleTextTap 手势的状态。这是第一次“结束”,下一次永远不会达到此代码

0 投票
1 回答
1884 浏览

objective-c - 拖动 touchesBegan 后创建的 UIView

我有一些 UIView 子类存在于一种库存中。当您点击一个时,另一个可拖动的版本会放在它上面。我希望库存版本保持不变,而您拖着其他人到处走。制作副本的代码有效,但拖动手指并不会移动它。

如果我释放然后开始拖动新创建的版本,它会按预期移动。我认为这是因为最初的触摸(造成欺骗)在响应者链中没有可拖动的版本。

一点代码...

在我固定的“图标”中......

在我的视图控制器中...

在我的 DraggableItem...

现在再次创建可拖动版本的作品。可拖动的版本可以在您第一次松开第一次触摸后移动。但我认为我需要让新创建的 UIView 来响应最初为“图标”所做的触摸。

有任何想法吗?

我知道这个问题有点类似于这个问题:如何将第一响应者从一个 UIView“转移”到另一个?但在这种情况下,应该接收触摸的视图已经存在,而我需要将触摸传递到新创建的视图上。

0 投票
2 回答
14718 浏览

iphone - UIView,它的 superview 和 touchesBegan:

假设我有一个处理一些 UIViews 的 UIViewController 子类。这些 UIView 被添加为 UIViewControllerview属性的子视图):

UIViewController:

AFAIK,因为bigUIView是最前面的视图并且覆盖了整个屏幕,所以它将接收touchesBegan:withEvent:和其他视图,例如button不会接收任何触摸事件。

在我的应用程序bigUIView中必须是最顶层的视图,因为它包含主要的用户界面对象(CALayers,实际上是主要的游戏对象),当动画时,它们必须位于所有其他次要 UI 元素(UIButtons 等)之上。但是,我希望仍然能够在响应者链中拥有 UIButtons 和其他对象。

我尝试在bigUIView课堂上实现以下内容:

笔记:

  1. bigUIView的超级视图是指 UIViewController 的view属性,它是否将触摸事件传播到它的所有子视图?
  2. bigUIView必须有userInteractionEnabled = YES,因为它还处理用户输入。
  3. 我无法将button/smallImageView放在前面,因为它会出现在主要游戏对象(的子层bigUIView)上方。

提前致谢。

0 投票
2 回答
4462 浏览

iphone - iPhone:点击透明UIScrollView后面的视图

我有一个设置为具有清晰背景的 UIScrollView。滚动视图的一部分确实有内容,但部分没有(因此它显示了它后面的其他视图)。我希望能够通过 UIScrollView 并点击到后面的 MKMapView,但仅限于 UIScrollView 的透明部分。

我发现了一些我很难理解如何开始工作的代码:

有人可以帮我想想如何将触摸事件转发到另一个视图后面的视图吗?我可以从 UIViewController 调用 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 吗?

0 投票
4 回答
31357 浏览

ios - 有什么方法可以询问 iOS 视图的哪个子视图具有第一响应者状态?

在 Mac OS X 中,您可以像这样找到第一响应者:

有什么方法可以在 iOS 中做到这一点吗?或者您是否需要枚举子控件isFirstResponder并向每个子控件发送消息?