使UIControl仅接受滑动手势并传递触摸/轻击手势

时间:2014-10-22 06:22:27

标签: ios objective-c uigesturerecognizer gesture uicontrol

我正在使用Xcode 6.1在Objective-C中为iPhone 5开发iOS 8.1应用程序。

单击UITextView时,我会在键盘上方弹出一个不可见的UIControl视图,以便用户可以从键盘上方向下滑动并关闭键盘(然后移动UIControl再次退出视图)。这工作正常。但是,弹出键盘上方的UIControl视图覆盖了另一个UITextView,因此无法轻触覆盖的文本视图。每当我尝试点击覆盖的文本视图(由于UIControl不透明而可见时),没有任何反应,因为UIControl似乎只是采用了水龙头而没有对它们做任何事情。

我的问题是,如何制作它以便UIControl只是忽略点击(让它们直接通过,以便下面的UITextView可以接受它们),然后接受滑动(以便,当它向下滑动时,它可以解除键盘并移出视野)?

我已经尝试了几种解决方案但是找不到能够满足我想要的解决方案。

谢谢!

3 个答案:

答案 0 :(得分:1)

question与您的相似。对您的UIControl进行子类化并覆盖- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event并调用其super变体将其传递给其视图。

答案 1 :(得分:0)

还有另一种方法可以做到这一点。将UIViewController的主视图更改为UIControl的子类,而不是UIView。将以下IBAction连接到视图,以便在点按背景时关闭键盘。

- (IBAction)backgroundTapped{

    [self.view endEditing:YES];

}

Apple Documentation - endEditing:

答案 2 :(得分:0)

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

使用此活动。如果点击手势返回否。