UIButton UIEdgeInsets区域未在UIInputViewController inputview内部接收触摸

时间:2018-12-14 01:37:13

标签: ios uibutton custom-keyboard uiinputviewcontroller

因此,我在进行自定义键盘扩展,遇到了UIButtons之间的中间和垂直间隙可被击中的问题。

因此,我试图通过更改UIEdgeInsets来增加所有按钮的点击区域来解决此问题

extension UIButton {
override open func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
    let relativeFrame = self.bounds
    let hitTestEdgeInsets = UIEdgeInsets(top: -40, left: 0, bottom: -40, right: 0)
    let hitFrame = relativeFrame.inset(by: hitTestEdgeInsets)
    return hitFrame.contains(point)
}
}

我的修复问题

尽管我的解决方案确实增加了按钮的点击范围,但是唯一可以记录触摸的位置是在另一个按钮上,而不是在视图本身中。

例如。如果我点击按钮 A ,则将其注册为按钮,并按下按钮 B 。由于EdgeInsets较大,这是可以预期的。

  

但是当您尝试在两个按钮之间点击时,会出现问题   这导致没有任何按钮被按下。当应该按下按钮B时。

enter image description here

这是我在UIInputViewController中设置按钮的方式

 override func viewDidLoad() {
    super.viewDidLoad()
    let testKey:KeyButton = KeyButton(value: "A", buttonFrame: CGRect(x:20, y: 100, width: 40, height: 42), orientation: popUpKeyView.popupOrientation.center, withStyle: KeyButton.buttonStyle.white)
    testKey.delegate = self
    let testKey2:KeyButton = KeyButton(value: "B", buttonFrame: CGRect(x:20, y: 50, width: 40, height: 42), orientation: popUpKeyView.popupOrientation.center, withStyle: KeyButton.buttonStyle.white)
    testKey2.delegate = self
    self.inputView?.addSubview(testKey)
    self.inputView?.addSubview(testKey2)
}
  

编辑:2018年12月13日
找到了解决方案

奇怪的是,我在UIInputView中添加了背景色,BOOM开始起作用了! 如果有人要解释为什么会这样,那将不胜感激!

0 个答案:

没有答案