iOS 7自定义键盘UIView触摸事件在底行延迟
Posted
技术标签:
【中文标题】iOS 7自定义键盘UIView触摸事件在底行延迟【英文标题】:iOS 7 custom keyboard UIView touch down event delayed in bottom row 【发布时间】:2014-07-31 07:13:32 【问题描述】:这是一个奇怪的..
我有一个如下所示的UIView
xib 文件:
我已将每个 UIButton
touchDown
和 touchUpInside
事件连接到两个 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 个视图控制器级别。即使这样也没有意义。
【问题讨论】:
【参考方案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 几乎是任何东西。以上是关于iOS 7自定义键盘UIView触摸事件在底行延迟的主要内容,如果未能解决你的问题,请参考以下文章
如何告诉带有 UITextField 的自定义 UIView 接收触摸事件