Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Responder Chainを使って コードをスッキリさせたい - 第1回 HAKATA.s...
Search
ukitaka
April 16, 2018
Programming
6
1.4k
Responder Chainを使って コードをスッキリさせたい - 第1回 HAKATA.swift
https://hakata-swift.connpass.com/event/81656/
での発表です。
ukitaka
April 16, 2018
Tweet
Share
More Decks by ukitaka
See All by ukitaka
あなたの知らない「動画広告」の世界 - iOSDC Japan 2025
ukitaka
0
1.3k
CSの生産性改善を支える分析環境 Mercari CS/CRE Tech Talk #1
ukitaka
1
2.9k
switchのexhaustiveness/redundancy チェック 理論と実装 わいわいswiftc #8 @ukitaka
ukitaka
0
220
SwiftのDemanglerを書く @ わいわいswiftc番外編
ukitaka
0
460
Swiftの型システムに入門する - iOSDC Japan 2018
ukitaka
10
7.1k
理論から入門するswift/lib/Sema - わいわいswiftc #1
ukitaka
5
1.7k
Realmの処理を再利用可能かつ合成可能にする
ukitaka
0
960
マルチスレッドRxSwift @ 社内RxSwift勉強会
ukitaka
5
1.3k
今日こそ理解するHot / Cold @社内RxSwift勉強会
ukitaka
14
2.9k
Other Decks in Programming
See All in Programming
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
3.2k
Module Harmony
petamoriken
2
540
モビリティSaaSにおけるデータ利活用の発展
nealle
0
580
GeistFabrik and AI-augmented software development
adewale
PRO
0
160
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
470
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
460
乱雑なコードの整理から学ぶ設計の初歩
masuda220
PRO
32
14k
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
110
[SF Ruby Conf 2025] Rails X
palkan
0
350
Micro Frontendsで築いた 共通基盤と運用の試行錯誤 / Building a Shared Platform with Micro Frontends: Operational Learnings
kyntk
0
120
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
2
390
FlutterKaigi 2025 システム裏側
yumnumm
0
1.2k
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Optimizing for Happiness
mojombo
379
70k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
A designer walks into a library…
pauljervisheath
210
24k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Being A Developer After 40
akosma
91
590k
Scaling GitHub
holman
464
140k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Bash Introduction
62gerente
615
210k
Automating Front-end Workflow
addyosmani
1371
200k
Making Projects Easy
brettharned
120
6.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Transcript
Responder ChainΛͬͯ ίʔυΛεοΩϦ͍ͤͨ͞ HAKATA.swift @ukitaka
twitter: @ukitaka_ github: @ukitaka Yuki Takahashi
ࣗݾհ ❤ ؔܕϓϩάϥϛϯάɺDDD ✏ ܕγεςϜɺίϯύΠϥ ϨΠϠʔ
ࠓͷ
͍͖ͳΓͰ͕͢ɺ ͜ΜͳέʔεΛߟ͑ͯΈΔ
Cellͷதͷ ϘλϯΛλοϓͨ͠Β Alert / ActionSheetग़͍ͨ͠
None
͋Γ͕ͪ
ຯʹΊΜͲ͍͘͞ • UIAlertControllerΛग़͢ʹViewControllerͰ ॲཧΛ͢Δඞཁ͕͋Δ • CellViewControllerͳΜͯΒͳ͍ • ViewControllerCellͷϘλϯΛ(ී௨)ࢀ র͍ͯ͠ͳ͍
Α͋͘Δରॲ๏ • DelegateΛҾճ͢ • ֊͕ਂ͘ͳΕͳΔ΄Ͳਏ͍ • ViewߏͷมԽʹऑ͍
ͳΜͱ͔͍ͨ͠
ݪʹཱͪฦͬͯMVC
MVCͰͲ͏͋Δ͖ʁ
None
None
ϢʔβΞΫγϣϯͷॲཧ • MVCʹ͓͚ΔControllerͷΑ͏ͳΦϒδΣΫ τʹ௨Λͯ͠ϢʔβΞΫγϣϯड͚ͱΔͷ ͕ී௨ • MVCʹݶΒͣɺͲͷΞʔΩςΫνϟͰ͋ͬͯ ಉ͡
௨Λ͠Α͏
ཧ
௨͢ΔଆΠϝʔδ .notifyΛݺͿ͚ͩ
௨Λड͚औΔଆΠϝʔδ ͍͍ײ͡ʹDelegateͰड͚औΕΔ
DelegateΛҾճ͢ඞཁ͕ͳ͍ DelegateύλʔϯͷΑ͏ͳ Πϝʔδ
ͦ͜Ͱ Responder Chain
= UIResponderͷ࿈ͳΓ
None
UIResponder • UIReponder = ϢʔβͷೖྗΛर͑Δͭ • ͋ΔsubviewͰΠϕϯτΛर͏ͱॲཧͰ͖Δͱ ͜Ζ·Ͱ࣍ʑʹॲཧΛճ͍ͯ͘͠ • self.next
Ͱ࣍ͷResponder͕औΕΔ = Responder Chain
None
UIResponder • ResponderChain্ʹવViewController ͍Δʂ • DelegateΛҾ͖ճ͢·Ͱͳ͘ɺ͢Ͱʹͭͳ ͕͍ͬͯΔ • ͜Εʹ͔ͬΕ͍͍ײ͡ʹViewControllerʹ ʮ௨ʯͰ͖ͦ͏ʂ
ͳΜ͔͑ͦ͏
Ͳ͏Δ͔ʁ
ActionΛఆٛ͢Δ
DelegateΛఆٛ͢Δ
ViewEventΛఆٛ͢Δ ୭͕ϋϯυϧ͢Δ͔ͱɺ Ͳ͏σΟεύον͢Δ͔ΛܾΊΔɻ
ViewEventΛఆٛ͢Δ
UIResponderΛ֦ு͢Δ Responder ChainΛḷͬͯɺ ΠϕϯτΛϋϯυϧͰ͖ΔͭΛݟ͚ͭΔ
ʂ
௨͢ΔଆΠϝʔδ .notifyΛݺͿ͚ͩ
௨Λड͚औΔଆΠϝʔδ ͍͍ײ͡ʹDelegateͰड͚औΕΔ
ཧͷੈք͕࣮ݱͨ͠
ྑ͍ • DelegateΛViewͷਂ͍֊·ͰҾճ͢ඞཁ͕ ͳ͘ͳͬͨ • Viewͷ֊͕มԽͨ͠ͱͯ͠ɺίʔυͷม ߋ͕ෆཁɻViewͷมߋʹڧ͍ɻ
มΘΒͳ͍ • ͋ΔΠϕϯτΛड͚औΔͨΊͷprotocol࣮ ͠ΕΛίϯύΠϧ࣌ʹݕग़Ͱ͖ͳ͍ • ͜ΕDelegateઃఆ͠ΕͰಉ͡ • ࣮ࡍʹಈ͔͢ or ςετͰΧόʔ
RxCocoaͷԠ༻
RxCocoa + Responder Chain • RxΛ͍ͬͯͯಉ͕͡ى͜Δ • RxDataSourcesΛ͍ͬͯͯɺCellͷதͷΠ ϕϯτर͑ͳ͍ •
Responder Chainʹྲྀͯ͠͠·͓͏
ukitaka/RxResponderChain
͍ํ
ࡶʹResponder Chainʹྲྀ͢ Ϙλϯ͕λοϓ͞ΕͨΒ
ࡶʹResponder Chainʹྲྀ͢ దͳܕʹมͯ͠
ࡶʹResponder Chainʹྲྀ͢ Responder Chainʹྲྀ͢
ࡶʹVCͰड͚औΔ ViewControllerͰ ܕΛࢦఆͯ͠ड͚औΔ
গ͚࣮ͩ͠ΛΈΔ
࣮ͷཪଆ ࠇຐज़ʹΑ֤ͬͯUIResponderΦϒδΣΫτʹ PublishSubjectΛ࣋ͨͤΔ
࣮ͷཪଆ self.rx.responderChain Λੜ͢
࣮ͷཪଆ ͜ͷΦϒδΣΫτObserverType
࣮ͷཪଆ ʹEvent͕ྲྀΕ͖ͯͨΒ ResponderChainΛḷͬͯ
࣮ͷཪଆ ͖ͬ͞ੜͨ͠PublishSubjectʹ ΠϕϯτΛྲྀ͢
࣮ͷཪଆ ड͚औΔͱ͖ܕͰfilter
·ͱΊ
ResponderChain • View → ViewControllerResponder Chainܨ ͕͍ͬͯΔ • ௨ʹ͑Δ /
ָʹॻ͚Δ / มߋʹڧ͍
͓ΘΓ