我要撕掉我的头发,因为我无法想到为什么会出现这种情况的原因在5但不是6.所以基本上,我有一个以模态方式呈现的视图,带有导航栏和取消按钮({{ 1}} - 导航栏中没有任何自定义内容,只有标准按钮。点击此取消按钮时,我希望模态视图消失。这在iOS 6中运行得很好。但对于iOS 5,它拒绝在我的代码中使用它的3个地方中的2个工作。对我来说奇怪的是它适用于一个而不是另外两个。
使用故事板,我右键单击按钮,单击“已发送操作”下的“选择器”,然后将其拖动到视图控制器的.h文件中的相应UIBarButtonItem
方法。使用Xcode中的小闪烁动画成功确认链接。当我在iOS 6上运行应用程序时(模拟器或设备无关紧要),该方法在按钮点击时成功执行,我的模态视图被解除。但是,在iOS 5上,永远不会调用该方法(我在方法中设置断点以查看它们是否会被命中)。我甚至尝试将IBAction
方法中的参数从IBAction
切换到id
。不过没有雪茄。
我还尝试以编程方式(在UIBarButtonItem *
中)将取消按钮的操作设置为选择器。我甚至将目标设定为VC。再没有雪茄了。以下是我当前设置的屏幕截图:
请注意viewDidLoad
方法。
我错过了文档中是否有一些神奇的条款?为了让它在iOS 5中运行,我需要做些非常特别的事情吗?这对我来说肯定是个错误,但我对这些东西还是比较新的所以我知道什么。
我正在使用Xcode 4.5.2和故事板,并将iOS 5和iOS 6作为发布目标。
感谢您的帮助,谢谢。
答案 0 :(得分:2)
我认为可能存在使用 GestureRecognizer 的问题,请对该代码进行评论并尝试...
答案 1 :(得分:1)
我添加了一个单独的UIView
,它位于我的文本字段和按钮下方,位于导航栏/标题下方。我以编程方式添加了点击手势,这似乎识别了我的点按和取消按钮的操作。我仍然想知道为什么如果手势在根视图上,则轻击手势会吞噬UIBarButtonItem
的动作。 This question helped me figure this out。感谢。
答案 2 :(得分:0)
您可以使用以下委托方法 从手势识别器排除视图/控件 。
// UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
// exclude your view from gesture recognizer
if(yourView == touch.view)
{
return NO;
}
//
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
// exclude your view from gesture recognizer
if(yourView == touch.view)
{
return NO;
}
//
return YES;
}