IOS UIButton对触摸没有响应,多次按下,UIScreenEdge手势干扰



我展示了一系列模态视图,每个视图都有一个顶部标题工具栏和右上角的UIBarButtonItem,其中有一个"X"图像,用户可以点击它来关闭视图。

我遇到的问题是这些按钮经常对触摸没有响应,并且在执行操作之前似乎需要敲击5-10下。我甚至增加了按钮的图像大小以使区域更大,但无济于事。然而,在模拟器中,只要点击鼠标指针,它们似乎可以立即工作,没有问题。

我注意到的一件事是,主视图上似乎有一个我没有添加的UIScreenEdgePanGestureRecognizer。我认为它是用于Iphone通知中心的手柄,可以从顶部往下拉。底部也有一个。这些会干扰我的按钮吗?这些手柄总是对轻微的向下拖动做出响应。

我做了一个测试,把按钮放在屏幕中间,每次都能立即工作。顶部和底部是工具栏和按钮的明显位置,但奇怪的是,边缘手势识别器会导致这种冲突,而不会让每个人都生气。

// The button, added as part of a standard toolbar on very top of screen
UIButton *closeButtonImage = [UIButton buttonWithType:UIButtonTypeCustom];
[closeButtonImage setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];
[closeButtonImage setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width - 35, 9, 26, 26)];
[closeButtonImage addTarget:self action:@selector(closeClick:) forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithCustomView:closeButtonImage];

而不是这个:

[closeButtonImage setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width - 35, 9, 26, 26)];

试试这个:

[closeButtonImage setFrame:CGRectMake(0, 0, 26, 26)];

原因:您正在UIBarButtonItem中放置一个按钮。这有点奇怪,因为条形按钮项目本身就是按钮的一种,但它没有任何问题。然而,它取决于条形按钮项目将其内容放置在哪里。如果将按钮放置在包含条形按钮项的边界之外,则该按钮将变为不可映射。

不过,我真正的建议是不要做你正在做的事情。只需将close.png图像作为UIBarButtonItem本身的图像,并在条形按钮项本身上设置操作即可。它已经是一个按钮了。

您可以尝试为"forControlEvents:"使用其他类型,如UIControlEventTouchUpInside

最新更新