Я использую несколько распознавателей жестов на некоторых видах, но иногда виды слишком малы, и это трудно ударить. Использование распознавателей необходимо, так как я могу увеличить область попадания?Как увеличить область попадания UIGestureRecognizer?
8
A
ответ
19
Если вы делаете это для пользовательского UIView
, вы должны иметь возможность переопределить метод hitTest:withEvent:
:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
CGRect frame = CGRectInset(self.bounds, -20, -20);
return CGRectContainsPoint(frame, point) ? self : nil;
}
Приведенный выше код будет добавить границу с 20 точки вокруг точки зрения. Нажатие в любом месте этой области (или на самом представлении) указывает на попадание.
0
Если вы используете UIImageView
в качестве кнопки, вы можете использовать следующее расширение (Swift 3.0):
extension UIImageView {
open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.isHidden || !self.isUserInteractionEnabled || self.alpha < 0.01 { return nil }
let minimumHitArea = CGSize(width: 50, height: 50)
let buttonSize = self.bounds.size
let widthToAdd = max(minimumHitArea.width - buttonSize.width, 0)
let heightToAdd = max(minimumHitArea.height - buttonSize.height, 0)
let largerFrame = self.bounds.insetBy(dx: -widthToAdd/2, dy: -heightToAdd/2)
// perform hit test on larger frame
return (largerFrame.contains(point)) ? self : nil
}
}
Похожие на расширение UIButton
here
0
Swift версия @rmaddy ответ:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let frame = self.bounds.insetBy(dx: -20, dy: -20);
return frame.contains(point) ? self : nil;
}
Смежные вопросы
- 1. Как увеличить коэффициент попадания memcache?
- 2. Увеличьте область попадания для UITableView
- 3. UIButton: нужна область попадания круга
- 4. Как сделать область попадания более быстрой?
- 5. Как увеличить радиус тестирования попадания на прямоугольник в WPF?
- 6. Как увеличить область выделения объекта?
- 7. Как увеличить область касания UIButton?
- 8. Как увеличить область удаления JSTree
- 9. Как увеличить область выбора UIButton?
- 10. Как увеличить Область видимости переменной
- 11. Как увеличить прокручиваемую область ScrollViewer?
- 12. Увеличить область отвода GMSPolyline
- 13. Как увеличить коэффициент попадания кэша в базу данных Oracle?
- 14. Как уменьшить/уменьшить область попадания кнопки в Android?
- 15. Как увеличить область прокрутки в окне UIScroll
- 16. Как увеличить область касания на определенный процент?
- 17. WPF - Как увеличить определенную область изображения
- 18. Как увеличить область действия для UIButton?
- 19. Как увеличить круговую область с помощью Cocos2d?
- 20. Как увеличить выбранную область изображения, например, зрачок?
- 21. Как увеличить выделенную область на экране записи
- 22. Как увеличить выделенную область изображения на iPhone?
- 23. LibGdx - Увеличить сенсорную область актера
- 24. Возможно ли, чтобы анимация RenderTransform не изменяла область попадания мыши?
- 25. UIGestureRecognizer проблема подвидного распознавателя
- 26. Увеличение удара Область кнопки
- 27. Как правильно выбрать UIGestureRecognizer?
- 28. Как правильно подкласс UIGestureRecognizer
- 29. Как модульные подклассы UIGestureRecognizer?
- 30. Увеличение обнаружения попадания на ItemizedOverlay
Итак, вы спрашиваете, как увеличить вид? – Jordan
Нет, конечно, я знаю, как увеличить раму зрения :) Мне нужно увеличить рамку кадра, не затрагивая ее реальную рамку. – Tesseract