- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想使用 touchesBegan 方法来了解用户何时在我的 TableView 中的 UITextField 之外点击。
我有一个包含 TableView 的 UIView,我有以下方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"See a tap gesture");
UITouch *touch = [touches anyObject];
if(touch.phase==UITouchPhaseBegan){
//find first response view
for (UIView *view in [self.view subviews]) {
if ([view isFirstResponder]) {
[view resignFirstResponder];
break;
}
}
}
[super touchesBegan:touches withEvent:event];
我的 self.view 和我的 self.tableView 都将 userInteractionEnabled 设置为 YES,但由于某种原因,从未触发 touchesBegan。有什么想法吗?
最佳答案
如果您的 UIView
包含您的 UITableView
,那么 TableView 位于响应链的顶部,触摸事件不会进入您的 View 。但可能有更好的方法来做到这一点。你在追求什么?
更新
实现 UITextFieldDeletate
的 textFieldShouldReturn:
方法来拦截“返回”的按下:
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
此外,一个 UITableViewDelegate 是一个 UIScrollViewDelegate,因此您可以 Hook 这些方法以确定用户何时与 TableView 交互。
一般来说,我认为您不必担心在用户触摸键盘外部时立即关闭键盘,尤其是当您在同一屏幕上输入其他文本时。
摩尔
好吧,很公平,但是当您通过复合透明 View 拦截触摸事件时,事情开始变得复杂(这些也会变得昂贵),等等。而且您永远不知道将来会出现什么影响,不仅对用户而且对您这个程序员,当您将来想要升级应用程序时。
为什么不保持简单?只是一个“完成”UIBarButtonItem
,或者在键盘/选择器 ala Mobile Safari 上向上滑动的一点半透明 UIToolbar
怎么样?这些解决方案是用户可以接受的,最终可以让他的生活更轻松。通过将工件和功能分离到模块化单元中,它们无疑使开发变得更容易。
最后一点
使用 UITapGestureRecognizer 我认为在您的情况下很难正确处理。我担心您添加到表格 View 的任何点击识别器都会阻止诸如行选择或将控件移动到另一个 UI 元素(文本字段、开关等)之类的事情。
关于iphone - touchesBegan 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586865/
我正在编写一个 ipad 应用程序,您可以用 1 或 2 个手指在屏幕上拖动。我使用 touchesBegan、touchesMoved 和 touchesEnded 方法来识别触摸。我为 View
我的代码: var location = CGPoint(x:0,y:0) override func touchesBegan(touches: Set, withEvent event: UIEv
我正在尝试在我的 GameScene 中实现 ccTouchesBegan。 我已设置 isTouchEnabled = YES。我还在 touchDispatcher 上调用了 addStandar
我有以下代码可以在用户点击 View 时隐藏键盘,但 TouchBegan 根本不会触发: class LoginViewController: UIViewController, UITextFie
我有一个奇怪的问题,touchesBegan 处理程序被多次调用。如果我快速点击 UIView (UIButton) 2 次,touchesBegan 被调用 3 次。 我通过简单的时间测量解决了这个
所以问题是,当我启动它时,soundOff 按钮位于 soundOn 上方,但它是不可见的。所以我只看到了 soundOn 按钮,当我尝试点击 soundOn 按钮时,它实际上只是点击了 soundO
我有一个函数,每 2 秒被重复调用一次,每次从屏幕顶部带来一个具有随机纹理的球。我希望能够在 touchesBegan 中使用这个球,但我不能,因为它是一个局部变量。我试过将它设为全局变量,但这给了我
我正在尝试为我的应用程序弹出一个弹出窗口。到目前为止,弹出窗口在固定坐标处弹出,我试图让它在用户点击的位置弹出。这是我的: override func touchesBegan(touches: Se
// // CommentViewController.swift // Bordy // // Created by Micheal Tyler on 9/22/17. // Copyrig
是否可以在项目中的多个位置或对象中使用 touchesBegan 方法? 例如,如果我有一个带有两个按钮的主类: class GameScene: SKScene, SKPhysicsContactD
我正在尝试检测一个节点是否是敌人。如果是,我想删除它。我正在尝试使用 touched nodes 名称来检测这一点。我能够检测到节点的名称是否为敌人,但我不知道如何删除它。谢谢您的帮助! :) 这里是
我正在使用 UIPicker 来填充 UITextField 而不是键盘。这很好用,但我现在无法关闭 UIPicker。我希望能够点击屏幕上的任意位置并关闭 UIPicker。我已经尝试了每种触摸方法
我正在使用 NSTimer 构建一个旋转横幅来跟踪当前图像,该图像由 5 个不同的图像制成动画。我有一个 touchesBegan 设置,如果有人点击它,可以继续处理横幅上的触摸事件。我的概念验证有效
我目前正在使用 swift 开发一个 iOS 应用程序。我使用 override 编写了我自己的 tocuhesBegan 和 tochesEnded 函数。现在,当我使用 self.button 时
我的 Storyboard看起来像这样: Controller top/bottom layout guide view UIview UIBu
我想使用 touchesBegan 方法来了解用户何时在我的 TableView 中的 UITextField 之外点击。 我有一个包含 TableView 的 UIView,我有以下方法: - (v
touchesBegan: withEvent: / touchesMoved: withEvent: / touchesEnded: withEvent: 等只能被UIView捕获(如有问题请指出
我有一个文本字段,当我触摸屏幕上的其他位置时,它会隐藏键盘(通过我的 TouchesBegan 函数并辞职......等等)。但是当我触摸 Textview 时,TouchesBegan 不会被调用,
我想检测何时触摸其他地方而不是特定的 UIView 。我正在使用touchesBegan然而,对于它,它总是打印“触摸在外面”(参见下面的代码)。我错过了什么? 我从中得到了帮助post . over
我的 SKScene 有 1 个空节点 (buttonsGroup)。在我的 GameView 类中,我创建一个节点 (ball1),它是空节点的父节点。 buttonsGroup = chi
我是一名优秀的程序员,十分优秀!