UIButton UIEdgeInsets область не получает прикосновения внутри UIInputViewController inputview - PullRequest
0 голосов
/ 14 декабря 2018

Итак, я делаю собственное расширение клавиатуры, и я столкнулся с проблемой, что средние и вертикальные промежутки между кнопками 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.

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)
}

РЕДАКТИРОВАТЬ: 12/13/2018
Найдено решение

Как ни странно, но я добавилЦвет фона для UIInputView и BOOM это начало работать!Если кто-то хочет объяснить, почему это так, то это будет высоко ценится!

...