因此,我在进行自定义键盘扩展,遇到了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时。
这是我在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开始起作用了! 如果有人要解释为什么会这样,那将不胜感激!