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

ios - UIButton在Annotation的calloutView上点击失败

calloutView 上的按钮

我的 calloutView 的结构

我遇到的问题:我点击了按钮,但似乎是 CalloutView 收到了我的点击,而不是 UIButton。

首先解释一下: 1.“SYSUMyAnnoCalloutView”是一个 MKPinAnnotationView 2.“SYSUMyCalloutImageView”是一个 UIImageView,我将它初始化并在“SYSUMyAnnoCalloutView”上添加Subview 3. UIButton 和 UILabel 在“SYSUMyCalloutImageView”中添加Subviewed

对应代码: 1. 在“SYSUMyAnnoCalloutView.m”中

  1. 在“SYSUMyCalloutImageView.m”中

    } 返回自我;}

有人可以解决我的问题吗?将非常感激:)

0 投票
2 回答
1734 浏览

objective-c - 除了双击到 UITextView 之外的前向触摸

我有一个UITextView最重要的,我有多个UIView。任何触摸动作UIView都可以关联到相应IBAction的 . 在我的场景中,双击手势需要与UIView's相关联IBAction,除此之外的任何其他触摸都需要转发到底层UITextView

我做上述场景的代码块

我尝试了以下 SO 解决方案,

如何忽略触摸事件并将它们传递给另一个子视图的 UIControl 对象?

使用 hitTest 我无法在 UIViews 中捕获双击手势,该手势位于顶部UITextView

使 UIGestureRecognizer 接收子视图上开始的触摸

从in到的转发UITouch设置没有给出预期的默认行为touchBegan:withEvent:UIViewUITextViewUITextView

是否有任何其他解决方案可用于解决这种情况?

提前致谢。

0 投票
3 回答
579 浏览

ios - 如何防止键盘出现在自定义警报视图上

我正在创建一个类似于 UIAlertView 的自定义警报视图。我遇到的是,当我的警报可见时 UITextField 在后台变为活动状态时,键盘会向上滑动。

如果我像这样将警报视图添加到主窗口:

它会出现在现有键盘上,但如果在出现警报后键盘变为活动状态,它仍然会被遮挡。

当从一个视图导航到另一个视图时,通常会发生这种情况。退出视图在退出时触发警报,下一个视图想要激活 UITextField 或其他东西。

0 投票
1 回答
147 浏览

ios - 子视图如何识别父视图(iPhone)的设置属性?

场景是这样的,

我有UIButton一对一UIViewUIView父视图和UIButton子视图也是如此。
现在,

  1. 如果我将父视图的用户交互设置为 false,那么我可以点击 UIButton吗?
  2. 如果我不能触摸UIButton那为什么UIButton不能触摸?


你能解释一下如何UIButton知道它的父视图的用户交互是错误的吗?

谢谢,

0 投票
1 回答
921 浏览

ios6 - 用于触摸事件响应的 UIResponder 与 UIGestureRecognizer

我一直在研究各种方法来对我正在构建的应用程序的触摸事件进行编程响应,我对我正在阅读的内容有点困惑。

据我所知,iOS 中有两种普遍接受的响应触摸的方法:手势识别和触摸识别。

什么时候适合使用其中一种?

专门针对我正在构建的内容*:

我正在为需要在用户触摸的屏幕上放置项目(UIImageViews)并在用户拖动时移动它们的视图编写控制器。控制器正在与一个单独的模型通信,因此我需要精细控制在触摸事件期间何时向模型发送消息。

模型需要知道用户第一次触摸屏幕的位置(未启用多点触控)以及用户离开屏幕的位置。我需要在用户第一次触摸时查询模型,以了解用户是否打算编辑图像视图的位置或创建新的图像视图,并且我需要向模型发送有关用户从屏幕上抬起的位置的消息,所以模型可以更新。在拖动事件期间,我还需要向模型发送持续查询,以确定用户在任何给定时刻悬停的位置是否有效。

起初我以为我可以使用平移手势识别器来完成这项工作,但当我进一步研究它时,我无法找到一种方法来设置在触摸、拖动和抬起时的自定义函数调用事件(如果有办法,很高兴知道)。我找到了 UIResponder 方法,但这些方法仍然可以使用,还是最好只使用 iOS6 中的手势识别器?

* 代码不包括在内,因为这个问题的范围相当大,我不想用不必要的细节分散人们的注意力。

0 投票
2 回答
1034 浏览

ios - 加速度计 didAccelerate 委托方法未在 iOS sdk 6.0 中调用

我正在开发应用程序来获得用户如何有力地摇动 iOS 设备的阈值。我正在使用 iOS sdk 6.0。

我尝试了 UIResponder 委托方法 motionEnded:: 它在设备被摇动时被调用,但没有提供足够的数据来证明某个人摇动设备的力度。我进行了足够多的搜索,找到了使用 UIAccelerometer didAccelerate 回调方法的单一解决方案。但它没有被调用。是sdk的问题吗?由于此方法在 iOS 5 中已弃用。

我还尝试了 coreMotion 框架,但它提供了陀螺仪数据,显示设备旋转了多少,但没有摇晃多少。这样做的最佳方法是什么。我关注了如何检测有人摇晃 iPhone?但没有找到有用的答案。

0 投票
1 回答
540 浏览

ios - touchesMoved:withEvent: 停止响应

我已经应用了这个 stackoverflow 条目,以便在触摸从一个视图移动到另一个视图时检测到触摸。

子视图真正检测到触摸。但是,我正在做更多的事情。我需要将检测到触摸的视图从其父视图中删除,并将新视图添加到父视图。所以,我有这样的事情:

通过 if 语句后,应用程序无法响应触摸移动。你认为是什么问题?是不是这个原因造成的:[view removeFromSuperview]

0 投票
1 回答
1220 浏览

ios - UITextField nextResponder 只工作一次

我有多个 UITextField 并试图单击下一步以在它们之间切换。我已经为每个标签设置了 1-4。当我运行我的代码时,它会移动到第二个,但不会移动到第三个。如果我跳 textField.tag + 2; 它会跳到第三个字段,但不会从那里继续前进。这是我的代码:

0 投票
1 回答
311 浏览

iphone - Programmatically cancel user scrolling a UIScrollView

I'm using KVO to observe the the contentOffset property of a UIScrollView. When the user is pulling the scrollView down and the contentOffset.y == -50.0, I want the scroll view to release as if the user took their finger off the screen. Is there anyway to do this?

0 投票
2 回答
919 浏览

ios - UIScrollView:仅在允许时滚动

我一直试图只UIScrollView在一个方向上滚动并仍然获得所有UITouch事件。我根本不完全确定这是可能的。

我试图覆盖UIResponder“触摸”事件,但是一旦UIScrollView开始滚动,触摸方法就会停止调用。

然后我尝试将UIScrollView'scrollEnabled属性设置为 false ,直到我希望UIScrollView开始接收拖动事件,但我似乎无法找到一种方法让UIScrollView开始在拖动中接收触摸事件。这可能吗?

我的下一次尝试是在滚动视图中添加“填充”并通过玩弄该contentOffset属性来创建我自己的“触摸事件”,但这开始调用scrollViewDidScroll:过多的时间并疯狂地处理——还有一些响应有效性的问题.

我玩过hitTest:withEvent:, pointInside:withEvent:touchesShouldBegin:withEvent:inContentView:touchesShouldCancelInContentView:没有任何成功。

从那以后,我尝试了其他一些方法,但都没有奏效。此外,根据我的发现,设置delaysContentTouches为 false 会破坏滚动响应。

我会喜欢一些真正的覆盖触摸方法。如果我不调用 super 的方法,则UIScrollView不会收到触摸。

我需要一种方法来获取UITouches (拖动、开始、释放和取消,而不仅仅是点击),而不影响 的滚动UIScrollView,因为UIResponder一旦滚动开始,“触摸”事件就会消失。这可能吗?