iPhone 5模拟器没有按钮事件

4

当我在iPhone 6模拟器上测试我的应用程序时,一切都按预期工作。但是,如果我在iPhone 5或 iPhone 5.1 模拟器中进行测试,则似乎无法触发按钮事件。我使用的是 Xcode 4.5.2,没有使用故事板,并且我已经测试了具有动作的简单按钮,例如:

- (IBAction)test:(id)sender {

    NSLog(@"YEES");
}

通过界面生成器将操作连接起来,使用拖放方式。但我似乎无法触发它…你有什么想法是什么问题吗?

2022年1月18日更新:

如果我在iPhone 5/5.1模拟器上对按钮进行“普通”点击,则不会发生任何事情。 如果我对按钮进行稍微“缓慢”的点击,则该按钮将被“按下”/选定。 如果我真的很慢地点击,比如按住按钮3秒钟,我就会得到按钮点击事件! 这怎么可能?


2
按钮上的 userInteractionEnabled 属性是否开启? - CodaFi
userInteractionEnabled 已启用,是的。 - user328146
你正在将你的IBAction与哪个事件连接?应该是touchUpInside。 - Sunil Pandey
我有相同的问题,如果你找到解决办法,请写下来。在iOS 6中,所有按钮都按照建议进行了按压,但在iOS 5模拟器上,只有在长时间点击后它们才会触发事件... - Mikhail
3个回答

3

我找到了解决方案 - 我在容器UIView中添加了UITapGestureRecognizer,它可以在UIButtons之前拦截事件,并且需要一些时间才能失败,然后按钮才能处理点击...但奇怪的是,在iOS 6中一切正常。

为了避免这种情况,我们可以简单地调用:


```swift yourButton.isExclusiveTouch = true ```
[tapRecognizer setCancelsTouchesInView:NO];

0

我真的怀疑这可能是视图重叠的问题。 请给你在视图控制器上使用的视图着色,并检查是否有任何视图重叠了你的按钮。


在为我的不同视图着色后,似乎没有重叠的视图。但是请查看我在问题中的更新 - 我认为我能够稍微缩小问题范围。 - user328146

0
我曾经遇到一个类似的问题,是在 iPhone 5s 模拟器上。通过试错,我发现模拟器中按钮的高度为 0 或者是一个较小的数字。第一个提示是当我改变其背景颜色时,在模拟器中并未显示背景(在更大的模拟器上,如 6 或 6 Plus,则显示为细线而非全高)。然后我添加了一个高度约束,它开始接受点击事件。这帮助我确定了问题所在,但这不是我要寻找的解决方案。最初我布置按钮时没有设置大小约束,因此应该根据其固有大小确定其实际大小。因此,我将按钮的垂直压缩阻力更改为“必需”的,这就解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接