问题标签 [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 回答
1399 浏览

cocoa-touch - UITextField canBecomeFirstResponder 返回 NO

在该方法中-(void)registerUser,我展示了一个带有 2 个 UITextField 和一个 Ok 按钮的模式视图。

填充 UITextFields 并按下 Ok 按钮后,我调用委托方法-(void)AEMUserRegistrationVCUserName:(NSString *)un password:(NSString *)pw来验证连接到服务器的数据。

当答案到达时,-(void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response如果数据错误,我尝试将焦点设置在 UITextfield 上,self.userRegistrationVC.userName becomeFirstResponder]但它没有获得焦点。

我已经检查过[self.userRegistrationVC.userName canBecomeFirstResponder],它返回 NO,另一方面,这是文档所说的默认返回的内容。

我的代码在这里作为参考:

笔记:

self.userName并且selfPassword是 NSStrings。 self.userRegistrationVC是一个 UIViewController。 self.userRegistrationVC.userName并且self.userRegistrationVC.password是 UITextfields。

调用顺序将是:

  • -(无效)注册用户
  • -(void)AEMUserRegistrationVCUserName:(NSString *)un 密码:(NSString *)pw
  • -(void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response

阅读论坛时,许多问题都以 [UITextField becomeFirstResponder] 作为解决方案来回答,所以也许我遗漏了一些重要的东西,我无法让它发挥作用。

文档说您可以覆盖 canBecomeFirstResponder 以返回 YES,但是如何覆盖 UITextField 方法?这是需要做的吗?

0 投票
2 回答
5879 浏览

iphone - iPhone UIView touchesMoved: withEvent: 不会在 UIView 上使用手势识别器调用

我添加了一个UIView依赖于 TouchesMoved: 拖动触摸的事件。在同一个视图控制器中已经存在长按、点击、旋转和捏合手势识别器。我遇到了视图接收touchesBegan:touchesEnded:事件,但没有移动的问题。

我的 touchesMoved 问题不是由手势识别器取消视图中的触摸引起的吗?我还涉及到滚动视图。这可能是罪魁祸首吗?

如果我无法使用 touchesMoved,这是最接近实现“触摸和移动”功能的手势。它是点击还是平移手势识别器?

谢谢您的帮助!

0 投票
2 回答
1554 浏览

uiimageview - 如何检测以编程方式触摸了哪个子视图

我在网上搜索了很多,但没有找到任何具体的东西。我想这不是一个很大的问题,但我无法弄清楚。

我正在处理 UIImageView“A”,然后添加一些其他 UIImageViews 作为该“A ImageView”的子视图。为所有子视图启用了 UserInteraction。现在在 TouchBegan 方法中,我得到“A ImageView”的子视图数组并将其与 Touch.view 进行比较。但 touch.view 始终等于父视图,即“A ImageView”,并且永远不会返回触摸的子视图。

所以请指导我如何检测触摸了哪个子视图,然后我将通过更新其中心将该子视图移动到新位置。

提前感谢大家,期待您的回复。

问候,

0 投票
1 回答
560 浏览

ios - 是否可以决定 UITouch 绑定到哪个视图?

我有几个 UIView,它们的形状有些复杂,我通过每个 UIView 的 drawRect: 方法绘制了这些形状。我保存了对路径的引用(通过 CGPath 属性),并在我的触摸方法中使用它来检测触摸是否实际上在路径或形状(CGPathContainsPoint)内。由于形状的原因,视图的某些区域是透明的(显然,任何不是正方形/矩形的区域都将具有透明区域,假设视图的 backgroundColor 属性设置为 clearColor 或类似的)。

对于视图最终位于顶部或相互重叠的情况(经常发生),我正在测试触摸方法(touchesBegan 等)以查看触摸是否实际上在 CGPath 或形状内。如果触摸不在形状内,我会将触摸转发到下面的下一个视图,以查看它是否反过来通过了该要求。

可悲的是(令我沮丧的是),这与实际绑定到视图的触摸行为不同。我已经以各种方式解决了这个问题,除了一个特别的问题。每个视图都使用 UIRotationGestureRecognizer。但是,如果触摸源自另一个视图的透明区域,并且该视图将该触摸转发到其下方的视图,则永远不会触发 UIGestureRecognizer。

我已经从我知道的各个角度看待这个问题。我试图想办法将触摸重新分配或绑定到适当的视图,但我不知道这是否可能。只要视图只是将触摸转发到另一个视图,触摸将保持绑定到首先收到触摸的原始视图。

我想知道您是否可以通过子类化 UIApplication 或 UIWindow 并覆盖 sendEvent:" 方法来执行此操作。我不确定 Apple 在这方面可能会给您什么控制权。我无法做任何可能访问私有的事情API's. 我真的只需要一些方法来重新分配触摸,以便视图认为触摸属于它。

有任何想法吗?'

0 投票
1 回答
1175 浏览

iphone - 如何继承 UITextView

我如何继承UITextViewin以 UIActionSheet覆盖in 。canBeforeFirstResponderdisable copy, select, and select allUITextView

任何人都知道如何在 h 文件中对其进行子类化。

感谢帮助。

0 投票
2 回答
1112 浏览

ios - 将摇动手势事件传递给应用程序委托

我将 motionBegan:withEvent: 方法放在我的视图控制器中以查看它是否可以工作,但它没有被调用。在viewWillAppear中,我使视图控制器成为第一响应者,并从canBecomeFirstResponder.

此视图控制器位于拆分视图的主窗格中,因此在我摇动设备之前,第一响应者可能已更改。

但我真正的问题是如何将所有运动事件传递给我的应用程序委托中的处理程序?我真的必须在所有视图控制器中使用 motionBegan:withEvent: 方法或委托给所有第一响应者吗?难道没有办法让这样的事件在不向每个 UIResponder 中插入代码的情况下沿响应者链向上流动吗?似乎会有,但我还没有指出如何做到这一点。

0 投票
1 回答
118 浏览

ios - 后台应用程序的响应者链是什么样的?

如果音频应用程序配置为在后台播放音频,您可以将其设置为接收远程控制事件。Apple 的文档描述了什么是必要的以及如何设置它。其中一个关键方面是确保接收和响应远程控制事件的对象可以(并且将)成为第一响应者。

当应用程序在后台时,响应者链是什么样的。我熟悉响应者链及其运作方式,但我如何知道哪些对象是响应者链的一部分,以及当应用程序在后台时哪个对象成为第一响应者?

0 投票
1 回答
696 浏览

ios - 破解 ios ui 响应者链

我在处理触摸事件时面临一个微妙的问题。这可能不是通常的东西,但我认为这是可能的。我只是不知道怎么...

我有一个主视图 (A) 和主视图 (B) 有很多子视图 1,2,3,4,5,...

其中一些子子视图(1,2,4)是滚动视图。

碰巧我想用两个手指盘在 A 和 B 之间切换。

我曾尝试将 UIPanGestureRecognizer 附加到 MainView,但滚动视图取消了触摸,它仅在某些时候有效。

我需要一种一致的方法来首先捕获触摸,检测它是否是两个手指平移,然后才决定它是否会向下(或向上......我不确定)响应链传递触摸。

我试图创建一个顶级视图来处理它,但我无法让触摸通过该视图。

我发现很多人有类似的问题,但无法从他们的解决方案中找到解决这个问题的方法。

如果有人能给我一盏灯,那就太好了,因为我已经对此感到绝望。

0 投票
4 回答
20752 浏览

iphone - 在 iOS 上,如果 superview 的 userInteractionEnabled 为 NO,那么所有子视图也会被禁用吗?

我认为当一个视图被触摸或点击时,它的处理程序首先被调用,然后它的超级视图的处理程序被调用(向上传播)。

但是,如果超级视图userInteractionEnabled设置为 NO,那么所有子视图和后代也被禁用以进行用户交互,这是真的吗?如果我们只想禁用主视图但不想禁用子视图怎么办?

0 投票
1 回答
433 浏览

iphone - 如何使用 UILabel 显示 APNS 设备令牌?

我想用 UILabel 显示一个 APNS 设备令牌。

所以我在下面编码:

但什么也没发生。怎么了?