【问题标题】:iOS 7 custom keyboard UIView touch down event delayed in bottom rowiOS 7自定义键盘UIView触摸事件在底行延迟
【发布时间】:2014-07-31 07:13:32
【问题描述】:

这是一个奇怪的..

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

我已将每个 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,如下所示:

我在 Interface Builder 中检查了所有 UIButton 属性是否相同,并且我尝试移动 UIButton 的对象顺序,如您在图片左侧看到的那样,我'我已经没主意了。基本上,奇怪的是 UIControl 行为根据其在父视图中的位置而有所不同...

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

【问题讨论】:

    标签: ios objective-c iphone uiview uibutton


    【解决方案1】:

    The document 说:

    希望用户从屏幕底部向上滑动以显示 控制中心。如果 iOS 确定从 屏幕底部应该显示控制中心,它不提供 当前正在运行的应用程序的手势。如果 iOS 确定 触摸不应该显示控制中心,触摸可能会稍微 在到达应用程序之前延迟。

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

    但是,就你而言,我认为你应该在UIResponder 中使用inputView
    见:https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/InputViews/InputViews.html

    inputView 不受该问题的影响。

    【讨论】:

    • 好吧,这是有道理的......虽然我没想到 inputView 没有问题,但 inputAccessoryView 有。谢谢! :) 我猜另一件事是 inputView 被限制为 215 像素高,inputAccessoryView 几乎是任何东西。
    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多