我已经在我的应用程序上实现了SWReveal控件。为了激发这个动作,我有一个带有自定义视图的UIBarButtonItem。好吧,一切工作正常,但我注意到,即使点击远离图像(约44像素宽的图像,然后点击100像素),我仍然可以触发事件。将左键钮按钮的可点击区域限制为自定义按钮的大小
我一直在寻找了一段时间,我已经找到了最好的解决方案(定义自定义按钮和实例化的UIBarButtonItem与“initWithCustomView”)
这是我以前的代码:
UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"reveal-icon"] style:UIBarButtonItemStylePlain target:_revealController action:@selector(revealToggle:)];
self.navigationItem.leftBarButtonItem = revealButtonItem;
而随着“办法”的代码:
//create the image for your button, and set the frame for its size
UIImage *image = [UIImage imageNamed:@"reveal-icon"];
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height);
//init a normal UIButton using that image
UIButton* button = [[UIButton alloc] initWithFrame:frame];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:_revealController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];
//finally, create your UIBarButtonItem using that button
UIBarButtonItem* revealButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = revealButtonItem;
随着我知道我有一个正确的大小按钮稍后代码(我给自己定的backgroundColor,并检查了心病该按钮的矩形大小),但仍然在远离按钮时触发该动作。
¿任何想法?
预先感谢您。
不回答你的问题,但:你为什么要这么做?有一个原因是iOS增加了条形按钮项目的可触摸区域。你似乎有一个菜单按钮(作为左边的唯一按钮),我真的没有看到明确使可触摸区域小于默认值的任何优势。并且:在设备上进行测试,而不是在模拟器上进行测试! – 2015-01-26 19:58:27
如果您的可触摸面积仅为20x20pt(只是猜测您的图标的大小),您的用户将会杀了你; ;-) – 2015-01-26 20:00:40
我已经阅读了苹果的人类指南,并且我不会假装制作这样一个小小的按钮,但正如我在问题中所说的那样,问题是可选择的区域比按钮的实际大小大得多(您可以在其他着名的应用程序中看到相同的问题,您可以将自定义图像用作按钮,但是远离它会触发这个动作,但在Facebook应用中,你会看到这个beaheaviour更正了。:) – raululm 2015-02-07 19:58:43