【问题标题】:UIButton responds to event outside of frame [duplicate]UIButton响应框架外的事件[重复]
【发布时间】:2013-08-08 12:16:55
【问题描述】:

我有一个导航控制器,已将UIButton 添加到导航栏,但它有问题。即使我在按钮外点按方式,它仍然称之为动作。

这就是我创建和添加按钮的方式:

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[backBtn setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(backPressed:) forControlEvents:UIControlEventTouchUpInside];   
[backBtn setFrame:CGRectMake(0, 0, 70, 30)];
    //[backBtn setFrame:CGRectMake(20, 7, 70, 30)];

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backBtn] autorelease];

这是按钮的点击范围:

http://www.flickr.com/photos/98950925@N07/9465901718

【问题讨论】:

标签: ios objective-c uinavigationcontroller uibutton uinavigationbar


【解决方案1】:

默认为左键和右键的大小。所以我们不能用左右按钮做任何事情。因为它的左右键区域。如果你想在这种情况下自定义按钮,它只会显示你给定的框架,但它会在左按钮的整个区域中工作。

【讨论】:

  • 我的意思是它默认大小的左按钮..如果你想在这种情况下自定义按钮,它只会显示你给定的框架,但它会在左按钮的整个区域工作。
  • 嗯,这就是答案,但我真的认为这很愚蠢......
  • 可能是它的愚蠢,但你知道如果它是默认功能我们能做什么。
  • 向 leftBarButtonItems 添加一个带有空标题的假普通按钮,其操作不执行任何操作?
  • @LordZsolt 你有没有听过用户抱怨后退按钮太容易点击?我没有。一旦你注意到它,我可以理解对这种行为感到惊讶,但你可能已经使用 iOS 很长一段时间没有注意到,对吧?只需避免将可触摸的 UI 元素直接放在导航栏上(无论如何这只是常识),您的应用就会运行良好,并且比将后退按钮的触摸区域限制在其可见区域时更易于使用。
【解决方案2】:

试试这个。

UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_back.png"] style:UIBarButtonItemStylePlain target:self action:@selector(Back:)];
[self.navigationController setHidesBackButton:YES];
[self.navigationItem setLeftBarButtonItem: customItem]; 

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2012-11-12
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多