难道UIButton不接受半个区域的点击....查看层次结构问题..?

时间:2012-09-26 13:02:36

标签: iphone objective-c ios uiview uibutton

我在view部分有一个按钮位置...它的一半在视图上方而另一半只是浮动的。因此,如果A是我的基本视图,B放在它上面,我将此按钮添加到B上。如果我点击B上方的部分上的按钮,它会接收触摸并执行操作,但如果此触摸在外面B区域比触摸没有进行....我在这里做错了什么......?任何帮助表示赞赏。

这是我添加按钮的方式..我正在尝试动态删除类似于在IOS中删除应用程序的按钮。

UIButton *deletButton1 = [UIButton buttonWithType:UIButtonTypeCustom] ;
        deletButton1.frame = CGRectMake(25, -5, 30,30);;
        deletButton1.backgroundColor = [UIColor clearColor];
        deletButton1.tag=1;
        UIImage *buttonImageNormal1 = [UIImage imageNamed:@"delete.png"];
        [deletButton1 setBackgroundImage:buttonImageNormal1 forState:UIControlStateNormal];
        [deletButton1 addTarget:self action:@selector(deleteButton:) forControlEvents:UIControlEventTouchUpInside];

[self.addButton1 addSubview:deletButton1]; 

这是一个截图..

enter image description here

3 个答案:

答案 0 :(得分:3)

对于记录,如果覆盖父视图的正确方法,则子视图不必位于父视图的框架内以接收触摸。

有关更多详细信息,请参阅此主题:

Interaction Beyond Bounds of UIView

答案 1 :(得分:0)

按钮的框架应从原点(0,0)开始。我的意思是按钮应该完全在视图B内。否则切割区域无法接收触摸。使按钮框架为(25,0,30,30)。

答案 2 :(得分:0)

你要在addbutton1上添加删除按钮,所以设置addbutton1的背景颜色并设置deletebutton1的另一种颜色,并检查天气框架是否合适。 我猜你的框架是不正确的,这就是它发生的原因,并确保你的deletebutton1没有因为另一个视图而被隐藏。

我不确定 但检查一次它可能会帮助你。 [deletButton1 setNeedsDisplay];