使UIControl只接受滑动手势并传递触摸/轻击手势
我正在使用Xcode 6.1为Objective-C中的iPhone 5开发iOS 8.1应用程序。使UIControl只接受滑动手势并传递触摸/轻击手势
单击UITextView
时,我会在键盘上方弹出一个隐藏的UIControl
视图,以便用户可以从键盘上方向下滑动并关闭键盘(然后将UIControl
再次移出视图) 。这工作正常。但是,在键盘上方弹出的这个UIControl
视图覆盖另一个UITextView
,因此无法使用覆盖的文本视图。每次我尝试点击覆盖的文本视图时(因为UIControl
不是不透明的而可见),因为UIControl
似乎只是在轻拍而没有对它们做任何事情,所以没有任何反应。
我的问题是,我怎样才能让UIControl
简单地忽略水龙头(让它们直接通过,以便底部的UITextView
可以接受它们),然后接受滑动(这样,当它向下滑动时,它可以关闭键盘并移出视图)?
我已经尝试了几种解决方案,但还没有找到能够满足我需要的解决方案。
谢谢!
这question是类似于你的。将UIControl
子类继承并覆盖- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
并称其super
变体将其传递给其视图。
还有另一种方法可以做到这一点。将UIViewController
的主视图更改为UIControl
的子类,而不是UIView
。将以下IBAction
连接到视图,以便在轻击背景时关闭键盘。
- (IBAction)backgroundTapped{
[self.view endEditing:YES];
}
这是否仍然允许这个主视图的子视图接收手势?难道它不是只为自己采取所有的手势? – 2014-10-22 14:47:23
@EnghanG它不会影响'UITextField',你尝试过吗? – Michael 2014-10-22 22:18:55
我还没有尝试过,因为我仍然想要一个类似于我所描述的解决方案。我只是在问,如果我最终不得不回到这个选择。谢谢。 – 2014-10-22 23:30:09
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
使用此事件。如果点击手势返回no。
唯一的问题是,我没有'UIControl'来忽略这个手势。我想让手势通过它到任何下面的视图。我不认为你在这里提供的建议会这样做,是吗? – 2014-10-22 14:48:43
感谢您指导我解决这个问题。我没有时间去测试这个解决方案(而且我从这个问题开始就已经开始了),但是还没有其他解决方案可以做到这一点,所以我打算将其标记为已接受。 – 2015-03-26 04:13:22