Skip to content

Instantly share code, notes, and snippets.

@hlung
Created January 5, 2016 06:51
Show Gist options
  • Save hlung/6b76023b2176f95a7cc6 to your computer and use it in GitHub Desktop.
Save hlung/6b76023b2176f95a7cc6 to your computer and use it in GitHub Desktop.

Revisions

  1. hlung created this gist Jan 5, 2016.
    27 changes: 27 additions & 0 deletions UIView+TouchableViews.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    // Make subviews touchable even if it is outside its superview bounds.

    // ** Add more views here **
    lazy var touchableViews: [UIView] = {
    return [self.voteUpButton, self.voteDownButton, self.authorDetailButton]
    }()

    // Boilerplate
    override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
    for view in touchableViews {
    if let v = view.hitTest(view.convertPoint(point, fromView: self), withEvent: event) {
    return v
    }
    }
    return super.hitTest(point, withEvent: event)
    }

    // Boilerplate
    override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
    if super.pointInside(point, withEvent: event) {
    return true
    }
    for view in touchableViews {
    return !view.hidden && view.pointInside(view.convertPoint(point, fromView: self), withEvent: event)
    }
    return false
    }