在我的应用程序中,所有UIButton对象都表现得很奇怪。似乎命中区域是两倍大。因此,当我点击一个按钮时,我实际上是点击它旁边或下面的按钮。
我已经以编程方式和Interface Builder创建了按钮,但两者都具有相同的结果。
在我的应用程序中,我正在使用主题代理。但即使我禁用它,按钮仍然表现得很奇怪。
以下是创建按钮的代码:
_btOpenContact = [UIButton buttonWithType:UIButtonTypeCustom];
_btOpenContact.frame = Rect(0, CGRectGetHeight(self.view.bounds) - 200, 100, 100);
[_btOpenContact addTarget:self action:@selector(navigateToContact) forControlEvents:UIControlEventTouchUpInside];
_btOpenContact.backgroundColor = RGB(233, 12, 24); resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 3, 0)] forState:UIControlStateNormal];
[self.view addSubview:_btOpenContact];
任何人都有任何想法我做错了什么?提前致谢
更新
我在其中一个按钮上添加了一个断点:
<UIButton: 0x1e0a1220; frame = (0 348; 100 100); opaque = NO; layer = <CALayer: 0x1e0a11e0>>
其中的CALayer:
<CALayer:0x1e0a11e0; position = CGPoint (50 398); bounds = CGRect (0 0; 100 100); delegate = <UIButton: 0x1e0a1220; frame = (0 348; 100 100); opaque = NO; layer = <CALayer: 0x1e0a11e0>>; backgroundColor = <CGColor 0x1e0a1300> [<CGColorSpace 0x1d53db80> (kCGColorSpaceDeviceRGB)] ( 0.913725 0.0470588 0.0941176 1 )>
答案 0 :(得分:0)
我认为您必须更改uibutton中使用的图像尺寸,按钮命中区域位于uibutton框架下,但图像尺寸小于按钮框架。
答案 1 :(得分:0)
您已将按钮的宽度设置为320表示它将覆盖整个屏幕,将宽度和高度更改为100 * 100并设置任何背景颜色以进行测试。通过查看按钮的背景颜色,您可以了解按钮的可见区域。
答案 2 :(得分:0)
虽然我仍然不知道是什么导致了这个错误。 (可能是iOS7 sdk中的一个错误......?)我通过子类化UIButton并进行命中测试来检查我是否真的点击了按钮。
#import "TTButton.h"
@implementation TTButton {}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (CGRectContainsPoint([self bounds], point)) {
NSLog(@"inside");
return self;
}
return nil;
}
@end