Итак, я делаю собственное расширение клавиатуры, и я столкнулся с проблемой, что средние и вертикальные промежутки между кнопками UIB могут быть нажаты.
Итак, я попытался исправить это, увеличив область нажатия всех кнопок, изменив 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)
}
РЕДАКТИРОВАТЬ: 12/13/2018
Найдено решение
Как ни странно, но я добавилЦвет фона для UIInputView и BOOM это начало работать!Если кто-то хочет объяснить, почему это так, то это будет высоко ценится!