问题标签 [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.
objective-c - UIResponder 链题
我不太了解修改响应者链的细节,所以如果这是愚蠢的,请不要抨击我;)
基本上我有 2 个视图堆栈(蓝色)作为父视图(红色)的子视图
它们都在某个时间点占据了父级的整个框架,因此显然只有顶部的一个正在获取触摸事件,这些事件向上游传播到父视图(红色)并到达窗口。
在某些情况下,我希望“其他”视图堆栈的合格子视图拾取触摸输入。也就是说,如果当前最顶层视图的 userinteractionenabled 设置为 no,则该视图将接收这些输入。
设置 userinteractionenabled 有效,但我觉得它是一个肮脏的黑客。要点是这个 topmot 视图大部分是透明的,我希望在指定区域被触摸时的事件最终出现在另一个堆栈上。
这是一张帮助直观解释的图片,请记住,两个蓝色视图都是父视图的 100%。
iphone - iPhone - 暂时禁用键盘
G'day 全部
我的应用程序有一个首次运行组件,该组件显示登录/注册屏幕,成功登录/注册后将继续加载应用程序的数据。对于那些看过它的人来说,这个过程遵循与 Instagram 相似的风格。如果键盘在输入密码时被关闭并且出现错误,它会在它消失后立即弹回,这让我觉得它看起来不是很好。那么,在应用程序发送用户凭据并等待响应时,有什么方法可以禁用键盘或阻止用户交互而不实际关闭它?
干杯和 TIA,佩德罗 :)
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”的接口声明
cocoa-touch - touchesEnded:withEvent: 来自 UIScrollView 第一响应者
我已将 UIScrollView 设为第一响应者。我需要-touchesEnded:withEvent:
在它后面的视图上维护一个方法的触摸事件。我尝试过使用该-nextResponder
方法,但失败了。我尝试转发-touchesEnded:withEvent:
到它背后的视图,但失败了。
我怎样才能让它工作?UIScrollView 将无法工作,除非它是第一响应者或以其他方式获取事件。
感谢您的任何帮助。可耻的是,Apple 的文档和 API 在某些方面很糟糕。
ios - 当父视图在 iOS 中将 userInteractionEnabled 设置为 NO 时如何进行触摸
当父视图的 userInteractionEnabled=NO 时,即使它们的 userInteractionEnabled 属性设置为 YES,它的子视图也不会接受触摸事件。
有没有办法在子视图中仍然获得触摸事件?
iphone - UIGesture 在 IOS 中因未知原因失败
我有一个 UITextField,它是 UIScrollView 的子视图,我有一个单击手势(或者可能是较旧的触摸)作为 UITextField 的一部分,使其成为第一响应者。我想向 UITextField 添加双击手势。为了使两个手势互斥,我需要重载单击手势(尽管这不是正确的词,因为我没有使用相同的名称)。当我这样做时,只要它调用的函数不会使 UITextField 成为第一响应者,它就可以正常工作。如果它确实使文本字段成为第一响应者,它第二次被调用时失败.... wtf。所以堆栈,一点帮助会有很长的路要走。
这是我添加手势的地方
这就是它的名字
您可能会注意到将注册到 textField 的手势输出的 NSLog 这是为了检查我的 singleTextTap 手势的状态。这是第一次“结束”,下一次永远不会达到此代码
objective-c - 拖动 touchesBegan 后创建的 UIView
我有一些 UIView 子类存在于一种库存中。当您点击一个时,另一个可拖动的版本会放在它上面。我希望库存版本保持不变,而您拖着其他人到处走。制作副本的代码有效,但拖动手指并不会移动它。
如果我释放然后开始拖动新创建的版本,它会按预期移动。我认为这是因为最初的触摸(造成欺骗)在响应者链中没有可拖动的版本。
一点代码...
在我固定的“图标”中......
在我的视图控制器中...
在我的 DraggableItem...
现在再次创建可拖动版本的作品。可拖动的版本可以在您第一次松开第一次触摸后移动。但我认为我需要让新创建的 UIView 来响应最初为“图标”所做的触摸。
有任何想法吗?
我知道这个问题有点类似于这个问题:如何将第一响应者从一个 UIView“转移”到另一个?但在这种情况下,应该接收触摸的视图已经存在,而我需要将触摸传递到新创建的视图上。
iphone - UIView,它的 superview 和 touchesBegan:
假设我有一个处理一些 UIViews 的 UIViewController 子类。这些 UIView 被添加为 UIViewControllerview
属性的子视图):
UIViewController:
AFAIK,因为bigUIView
是最前面的视图并且覆盖了整个屏幕,所以它将接收touchesBegan:withEvent:
和其他视图,例如button
不会接收任何触摸事件。
在我的应用程序bigUIView
中必须是最顶层的视图,因为它包含主要的用户界面对象(CALayers,实际上是主要的游戏对象),当动画时,它们必须位于所有其他次要 UI 元素(UIButtons 等)之上。但是,我希望仍然能够在响应者链中拥有 UIButtons 和其他对象。
我尝试在bigUIView
课堂上实现以下内容:
笔记:
bigUIView
的超级视图是指 UIViewController 的view
属性,它是否将触摸事件传播到它的所有子视图?bigUIView
必须有userInteractionEnabled = YES
,因为它还处理用户输入。- 我无法将
button
/smallImageView
放在前面,因为它会出现在主要游戏对象(的子层bigUIView
)上方。
提前致谢。
iphone - iPhone:点击透明UIScrollView后面的视图
我有一个设置为具有清晰背景的 UIScrollView。滚动视图的一部分确实有内容,但部分没有(因此它显示了它后面的其他视图)。我希望能够通过 UIScrollView 并点击到后面的 MKMapView,但仅限于 UIScrollView 的透明部分。
我发现了一些我很难理解如何开始工作的代码:
有人可以帮我想想如何将触摸事件转发到另一个视图后面的视图吗?我可以从 UIViewController 调用 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 吗?
ios - 有什么方法可以询问 iOS 视图的哪个子视图具有第一响应者状态?
在 Mac OS X 中,您可以像这样找到第一响应者:
有什么方法可以在 iOS 中做到这一点吗?或者您是否需要枚举子控件isFirstResponder
并向每个子控件发送消息?