我的应用程序中有一个系统设置,用户可以在其中捏合视图以将其扩展到全屏(如 Flipboard)。但是,当我这样做时,我想禁用一些在两种模式下都可见的按钮。通常它可以正常工作,但在以下边缘情况下会失败:
1)非缩放模式下的按钮(不要松开)
2)捏视图放大,并等待它完成动画。然后该按钮将其userInteractionEnabled
设置为NO
。
3)释放按钮,无论如何都会调用目标函数。我在目标函数中放了一个断点,并使用 lldb 检查按钮,userInteractionEnabled
确实设置为NO
.
我期望禁用的按钮不应该触发其目标是错误的吗?我应该在目标函数中检查这个吗?
这是实际禁用按钮的功能,以防万一您想查看(编辑:似乎有些混乱。下面的代码没有任何问题,我只是将其包含在内以使其彻底。)
//The function that disables the buttons
- (void)disableButtons:(SO2MenuButtons)buttons
{
UIView *view = nil;
if(buttons & SO2Mokuji)
{
view = [self.view viewWithTag:151];
view.alpha = 0.5;
view.userInteractionEnabled = NO;
}
if(buttons & SO2NoteView)
{
view = [self.view viewWithTag:152];
view.alpha = 0.5;
view.userInteractionEnabled = NO;
}
//etc, etc...
}
更新:
我将上面的内容更改为相同的结果
- (void)disableButtons:(SO2MenuButtons)buttons
{
UIButton *view = nil;
if(buttons & SO2Mokuji)
{
view = (UIButton *)[self.view viewWithTag:151];
view.enabled = NO;
}
if(buttons & SO2NoteView)
{
view = (UIButton *)[self.view viewWithTag:152];
view.enabled = NO;
}
//etc, etc...
}
编辑似乎我没有清楚地表达问题是什么,所以我拼凑了一个简单的项目来演示这个问题。您可以在此处下载(取决于您阅读此消息的时间,之前的链接可能已过期)。问题是按钮在被禁用后仍在触发其目标方法。看了上面的页面后,我为使用 filedropper 道歉......我不知道这些天共享项目的流行方式是什么>_<。不要点击绿色的大下载按钮,点击“下载此文件”