限制UI按钮的可触摸区域

时间:2013-04-20 13:14:26

标签: ios uibutton

这就是我设置按钮导航栏的方式

 UIButton *addEditButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [addEditButton setImage:[UIImage imageNamed:@"edit.png"] forState:UIControlStateNormal];
    [addEditButton setFrame:CGRectMake(0, 0, 62, 31)]; used frame same as image

    [addEditButton addTarget:self action:@selector(EditTable) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *addEdit = [[UIBarButtonItem alloc] initWithCustomView:addEditButton];
    self.navigationItem.leftBarButtonItem =addEdit;

一切都很完美,但当我触摸它时,按钮会被按下。如何解决这个问题有任何办法,只有当我触摸它时它才会被按下

这是图片enter image description here

3 个答案:

答案 0 :(得分:1)

我认为您遇到此问题是因为您设置的图像比按钮的实际尺寸小。请将按钮尺寸缩小或提供更大的图像。

我希望这会对你有所帮助。

答案 1 :(得分:1)

Apple已经设置了这个东西,因此用户可以顺利导航。建议不要进行将按钮放在navigationBarButton附近的设计。有一些方法可以做到,但改变这种事情并不好。它就像回复消息和删除消息一样,两个按钮都在彼此旁边

答案 2 :(得分:0)

它似乎只是这样,我仍然想出了一个解决方案。

一个是你可以隐藏导航栏并确实使用工具栏。

其他是您可以在此之后添加另一个按钮并将其启用属性设置为FALSE。

我不知道这是否合适,但似乎至少满足了你的要求。

以下是代码:

UIButton *addEditButton = [UIButton buttonWithType:UIButtonTypeCustom];
[addEditButton setFrame:CGRectMake(0, 0, 62, 31)];

[addEditButton setImage:[UIImage imageNamed:@"edit.png"] forState:UIControlStateNormal];

[addEditButton addTarget:self action:@selector(EditTable) forControlEvents:UIControlEventTouchUpInside];

UIButton *addEditButton1 = [UIButton buttonWithType:UIButtonTypeCustom];
[addEditButton1 setFrame:CGRectMake(63, 0, 30, 31)]; 

UIBarButtonItem *addEdit = [[UIBarButtonItem alloc] initWithCustomView:addEditButton];
UIBarButtonItem *addEdit1 = [[UIBarButtonItem alloc] initWithCustomView:addEditButton1];
addEdit1.enabled = FALSE;


NSMutableArray *buttonArray=[[NSMutableArray alloc]initWithCapacity:2];
[buttonArray addObject:addEdit];
[buttonArray addObject:addEdit1];

self.navigationItem.leftBarButtonItems =buttonArray;