Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UINavigationBarの隅々までタップしたい

 UINavigationBarの隅々までタップしたい

Yosuke Ishikawa

November 13, 2013
Tweet

More Decks by Yosuke Ishikawa

Other Decks in Technology

Transcript

  1. UINavigationBarͷ
    ۱ʑ·Ͱλοϓ͍ͨ͠
    @_ishkawa

    View Slide

  2. View Slide

  3. GHFeed

    View Slide

  4. ຊ୊

    View Slide

  5. Custom View
    λοϓ͍ͨ͠ͱ͜Ζ

    View Slide

  6. ΋͔ͯ͠͠ɿ
    ✗ Tips
    ✓ όουϊ΢ϋ΢

    View Slide

  7. ΞΠσΟΞ
    ✓ UINavigationBarͷhitTest:withEvent:Λվ଄

    View Slide

  8. hitTest:withEvent:
    leftBarButtonItem.customView

    View Slide

  9. hitTest:withEvent:
    navigationBar

    View Slide

  10. ͜ͷͱ͖

    View Slide

  11. for (UIView *subview in barButtonItem.customView.subviews) {
    UIView *customView = barButtonItem.customView;
    CGRect convertedRect = [self convertRect:subview.frame fromView:customView];
    !
    if (CGRectContainsPoint(convertedRect, point)) {
    CGPoint convertedPoint = [self convertPoint:point toView:subview];
    return [subview hitTest:convertedPoint withEvent:event];
    }
    }
    ʢcustomView.subviews͔Βhit͢Δ΋ͷΛ୳͢ʣ

    View Slide

  12. ͬͯ΍Δͱ

    View Slide

  13. ίίʹϘλϯ͕͋ͬͯ΋൓ԠͰ͖Δʂ

    View Slide

  14. ҰԠϥΠϒϥϦʹ͠·ͨ͠

    View Slide

  15. ISInteractiveEdgesNavigationBar
    https://github.com/ishkawa/ISInteractiveEdgesNavigationBar

    View Slide

  16. ࢖͍ํ
    Class navigationBarClass = [ISInteractiveEdgesNavigationBar class];
    Class toolbarClass = [UIToolbar class];
    !
    UINavigationController *navigationController =
    [[UINavigationController alloc] initWithNavigationBarClass:navigationBarClass
    toolbarClass:toolbarClass];

    View Slide

  17. pod ‘ISInteractiveEdgesNavigationBar‘, ‘~> 0.0.2’

    View Slide