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
CSの生産性改善を支える分析環境 Mercari CS/CRE Tech Talk #1
ukitaka
1
2.8k
switchのexhaustiveness/redundancy チェック 理論と実装 わいわいswiftc #8 @ukitaka
ukitaka
0
200
SwiftのDemanglerを書く @ わいわいswiftc番外編
ukitaka
0
450
Swiftの型システムに入門する - iOSDC Japan 2018
ukitaka
10
6.9k
理論から入門するswift/lib/Sema - わいわいswiftc #1
ukitaka
5
1.7k
Realmの処理を再利用可能かつ合成可能にする
ukitaka
0
930
マルチスレッドRxSwift @ 社内RxSwift勉強会
ukitaka
5
1.2k
今日こそ理解するHot / Cold @社内RxSwift勉強会
ukitaka
14
2.8k
RxSwift コードリーディングの勘所@社内RxSwift勉強会
ukitaka
3
1.1k
Other Decks in Programming
See All in Programming
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
240
社内での開発コミュニティ活動とモジュラーモノリス標準化事例のご紹介/xPalette and Introduction of Modular monolith standardization
m4maruyama
1
130
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
290
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
1
160
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
250
ReadMoreTextView
fornewid
1
450
Claude Codeの使い方
ttnyt8701
1
130
CursorはMCPを使った方が良いぞ
taigakono
0
140
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
520
SODA - FACT BOOK
sodainc
1
1.1k
WindowInsetsだってテストしたい
ryunen344
1
190
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Faster Mobile Websites
deanohume
307
31k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Facilitating Awesome Meetings
lara
54
6.4k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
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ܨ ͕͍ͬͯΔ • ௨ʹ͑Δ /
ָʹॻ͚Δ / มߋʹڧ͍
͓ΘΓ