iOS 7自定义键盘UIView触控事件在底行延迟

时间:2014-07-31 07:13:32

标签: ios objective-c iphone uiview uibutton

这是一个奇怪的......

我有一个UIView xib文件,如下所示:

enter image description here

我已将每个UIButton touchDowntouchUpInside个事件与两个IBAction方法相关联:

- (IBAction)touchUpInside:(id)sender
{
    NSLog(@"touch up inside");
    if (((UIButton *)sender == _enter) | ((UIButton *)sender == _back)) {
        [(UIButton *)sender setBackgroundColor:_color2];
    }
    else {
        [(UIButton *)sender setBackgroundColor:_color1];
    }
}

- (IBAction)touchDown:(id)sender
{
    NSLog(@"touch down");
    [(UIButton *)sender setBackgroundColor:_color2];
}

除了UIButton的最底行之外,一切都有效,这是奇怪的部分:

touch down事件被触发,但按钮必须保持0.5秒才能更改背景颜色,而其他按钮则立即显示。

它仅发生在UIButton的最底行,因为我试图用按钮@back,0,@enter切换按钮7,8,9,如下所示:

It is always the bottom-most row of <code>UIButton</code>'s that show the touchDown delay

我已经在Interface Builder中检查了所有UIButton属性是否相同,我尝试移动UIButton的对象顺序,如图所示左侧所示,我已经完成了想法。基本上奇怪的是UIControl行为根据其在父视图上的位置而有所不同......

更新:我将父UIView高度值设置得足够大,以至于最后一行下方有50个自由像素,UIButton现在工作正常。我现在能想到的唯一原因是下面有UITabBar个2视图控制器。即使这样也没有意义。

1 个答案:

答案 0 :(得分:2)

The document说:

  

期望用户从屏幕底部向上滑动以显示   控制中心。如果iOS确定触摸开始于   屏幕下方应显示控制中心,它不提供   对当前正在运行的应用程序的手势。如果iOS确定了   触摸不应显示控制中心,触摸可能会略有   在到达应用程序之前延迟。

这里有一个解决方案: UIButton fails to properly register touch in bottom region of iPhone screen

但是,在您的情况下,我认为您应该在inputView中使用UIResponder 请参阅:https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/InputViews/InputViews.html

inputView不会受到该问题的影响。