相关疑难解决方法(0)

iOS - UITutViewCell中UIButton的延迟"Touch Down"事件

我有一个自定义的UITableViewCell,它由以下内容初始化:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        self = [nibArray objectAtIndex:0];

        [self setSelectionStyle:UITableViewCellSelectionStyleNone];

        [self.downButton setBackgroundImage:[UIImage imageNamed:@"button"] forState:UIControlStateNormal];
        [self.downButton setBackgroundImage:[UIImage imageNamed:@"buttonSelected"] forState:UIControlStateHighlighted];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

按钮显示正确,带有适当的背景图像,但按下/单击按钮时,突出显示的图像不会立即显示.相反,您必须在更改发生之前将其保持一两秒钟.另一方面,释放按钮确实可以立即更改回原始背景图像.

在切换到突出显示的图像时尝试缓解迟到的变化,我将更改放在以下方法中:

- (IBAction)downDown:(id)sender {
    [self.downButton setBackgroundColor:[UIColor redColor]];
}
Run Code Online (Sandbox Code Playgroud)

上面的方法设置为"Touch Down"(与更常见的"Touch Up Inside"相对),我已经删除setBackgroundImage:forState:了突出显示的状态.与上述相同的问题.颜色最终会变为红色,但只有在单击并按住按钮一两秒后才会变亮.

我有一个按钮的方法,当"Touch Up Inside"出现时,该方法会执行,并且该方法可以毫无问题地执行 - 无论我是否快速点击按钮,或者在释放之前单击并按住它一段时间.

那么为什么延迟"触地"还是UIControlStateHighlighted?我正在尝试向用户提供即时反馈,以显示按钮已被按下.

如果需要,我可以提供更多代码,但这些是与背景外观有关的唯一位.

objective-c uibutton uitableview ios

39
推荐指数
3
解决办法
3万
查看次数

延迟按钮的突出显示状态

我在两个完全不同的情况下遇到了这个问题,这让人很奇怪.

  1. 情况:UIButton作为另一个UIView的子视图.
  2. 情况:UIBarButtonItem位于UIToolBar中.

在这两种情况下,按钮仅在稍微延迟后突出显示,约为0.5-1秒.绝对要在正常点击时突出显示视图.它们都可以在模拟器上完美运行,但不能在真实设备上运行(我有一个带有iOS 7.0.4的iPhone 5s).

我尝试了
将zPosition设置为这些视图的最高值(MAXFLOAT),以确保没有任何东西阻止了点击.
明确启用突出显示.

两者显然都没有用.

编辑:仍未解决.

user-interface ios ios7

11
推荐指数
2
解决办法
1578
查看次数

标签 统计

ios ×2

ios7 ×1

objective-c ×1

uibutton ×1

uitableview ×1

user-interface ×1