【问题标题】:UIButton - changing frame alters response to touchesUIButton - 改变框架改变对触摸的响应
【发布时间】:2011-09-30 01:37:24
【问题描述】:

我有一个 UIButton。我发现当我移动它时,它不再响应触摸。让我详细解释一下我是如何确定这一点的:当我将一个 100 像素宽的按钮向右移动 50 像素时,只有左半边响应了我的手指点击它。

当我动态更改它的框架时,如何告诉按钮“更新您的触摸检查器”?我在代码中更改框架,而不是在 xib 中。

初始化:

    MATCGlossyButton *repeat = [[MATCGlossyButton alloc] init];
    [repeat addTarget:self action:@selector(repeatPressed:) forControlEvents:UIControlEventTouchUpInside];
    [repeat setTitle:@"Repeat" forState:UIControlStateNormal];
    repeat.buttonColor = [UIColor brownColor];
    repeat.backgroundColor = [UIColor clearColor];
    repeat.cornerRadius = 20;
    repeat.frame = CGRectMake(200,208,105,50);

然后是:

repeat.frame = CGRectMake(265, 208, 105, 50);

【问题讨论】:

  • 您是在代码中还是在 IB 中更改它?
  • 那请贴出相关代码

标签: iphone ios ipad uibutton


【解决方案1】:

您是否有可能将按钮移动到其父视图的范围之外?即使剪裁关闭,触摸也不会传播到视图之外。

可视化视图边界的一种简单方法是执行以下操作:

#import <QuartzCore/QuartzCore.h>

[...]

view.layer.borderWidth = 1;
view.layer.borderColor = [UIColor redColor].CGColor;

【讨论】:

  • 是的,图层错误。按钮中间有一条红线。我尝试更改 self.view.frame 和 self.view.layer.frame 以正确适合我的横向屏幕,并且红线已修复。但!右半边的按钮仍然没有响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
相关资源
最近更新 更多