我正在开发一个应用程序,但我遇到了一个问题,归结为这种情况: 考虑具有两个按钮(button1,button2)和文本视图的超视图,所有这些都是其子视图。当我单击一个按钮时,我显示文本视图。当我点击textview之外的任何地方,但在超级视图中,我需要关闭文本视图。
我在超级视图中添加了一个UITapGestureRecognizer,并调用方法点击:在tap:中,我得到了点击的点,如果它在文本视图之外,我会关闭文本视图并删除GestureRecognizer。现在当我点击按钮2时会出现问题。我需要关闭文本视图以及执行按钮2的操作。但是它进入了tap:我不想从那里调用按钮2的方法。
我想知道的是,在移除手势识别器后,是否可以在相同的坐标上模拟相同的点按?如果不是我继续解决这个问题的方式是什么?
EDIT 我试过了:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
但它确实解决了我的问题
答案 0 :(得分:2)
我不知道是否可以在iPhone中重新创建用户手势,但有一种简单的方法可以用来实现您的需求。您可以使用的方法是
// called before touchesBegan:withEvent: is called on the gesture recognizer for a new touch. return NO to prevent the gesture recognizer from seeing this touch
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
您可以返回UIGestureRecognizer
是否应该接收触摸,或者换句话说应该执行与手势识别器绑定的方法。如果您返回NO
,则会将触摸传递给子视图。
不要忘记设置手势识别器的delegate
。并在UIGestureRecognizerDelegate
文件中包含.h
协议
您可以检查触摸是否在按钮框内,然后您可以return NO
其他return YES
以下是文档UIGestureRecognizer UIGestureRecognizerDelegate
答案 1 :(得分:0)
有一个简单的方法。这对我来说很好。请在“UIcontrolevents Touchdown”事件中调用您的方法。