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
UIViewController - Interactive PopGesture
Search
notoroid
April 04, 2025
Technology
0
21
UIViewController - Interactive PopGesture
札幌iPhoneアプリ開発懇談会 2025年4月勉強会資料
UIKit - UIViewController - Interactive PopGesture についてのプレゼンテーション資料。
notoroid
April 04, 2025
Tweet
Share
More Decks by notoroid
See All by notoroid
Xcodeショートカット 2025年版
notoroid
0
45
ZIPでくれ - Apple謹製 geocoding/ reverse geocoding
notoroid
0
67
WeatherKit iOS18 update - お天気の更新
notoroid
0
64
AppIntentsの用途 - AppleのGPT元年
notoroid
1
180
Privacy manifests - Appleと開発コミュニティ
notoroid
1
230
とっさのAutoLayout - Rewind autolayout
notoroid
0
120
UVC(USB video class)と マルチプラットフォーム - UVC support by Apple multiplatform
notoroid
0
350
SwiftUIむけに 整理された状態監視 Observation
notoroid
0
790
よせあつめSwift - Swift5.9
notoroid
1
690
Other Decks in Technology
See All in Technology
GrafanaをClaude DesktopからMCPで触ってみた
hamadakoji
0
1.3k
Azure AI Foundry Agent Serviceを使用してコードファースト アプリを構築する
tomokusaba
1
110
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク
sonic
1
550
トップエンジニアが語るDX最前線 / 20250517 Kazutoshi Ono & Ken Yamazaki
shift_evolve
0
200
Platform Engineering for Private Cloud
cote
PRO
1
160
エンジニアのための 法規制への取り組み方 #healthtechmeetup
77web
0
280
AIエージェントのオブザーバビリティについて
yunosukey
1
440
Sleep-time Compute: LLM推論コスト削減のための事前推論
sergicalsix
1
170
インラインRBSコメントに鯛pe checkersもニッコリ
sansantech
PRO
2
230
MagicPodが描くAIエージェント戦略とソフトウェアテストの未来
magicpod
0
340
Google CloudのAI Agent関連のサービス紹介
shukob
0
180
PandaCSSでつくる 型で守られたスタイリング基盤
dendaiman
1
110
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
14
860
Building Applications with DynamoDB
mza
94
6.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
180
53k
Six Lessons from altMBA
skipperchong
28
3.8k
Balancing Empowerment & Direction
lara
0
49
Building an army of robots
kneath
305
45k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
Transcript
6*7JFX$POUSPMMFS *OUFSBDUJWF1PQ(FTUVSF 04ΞϓϦ։ൃDMBTTJD ೳొཁ !OPUPSPJE J1IPOFΞϓϦ։ൃऀ݄
͢༰ w ΞϓϦͷ༷͕ϞόΠϧΞϓϦ։ൃͷηΦϦʔ͔Β֎ΕΔ࣌ w 6*(FTUVSF3FDPHOJ[FS w JOUFSBDUJWF1PQ(FTUVSF3FDPHOJ[FS
͞ͳ͍༰ w ൚༻తͳ6*(FTUVSF3FDPHOJ[FSͷհ w 4XJGU6*ͰͷJOUFSBDUJWFQPQͷڍಈ
͓ w J044%,DMBTTJD w อଘ֬ೝ DPO fi SN ΛՃ͢Δ
ࣗݾհ w J1IPOFΞϓϦ։ൃऀ 9!OPUPSPJE w ΞϓϦ։ൃऀྺ ʙ w
ΞϓϦ࡞࢛ͬͯੈل 8JOEPXTΞϓϦʙJ04 w झຯήʔϜ ࣹਆܦ͕ਰ͑ͱͷർΕ͕ൈ͚ͳ͍
J044%,DMBTTJD
88%$લ
͜ͷ࣌ظJ044%,ʹؔ͢Δ τϐοΫ͕গͳ͍ͷ͕
ͦΜͳ࣌ʹͦ͜J044%,ͷ DMBTTJDͳ༰ʹ৮ΕͯΈΔ
ͦͷ͓
6*7JFX$POUSPMMFS
6*,JUΛͬͨΞϓϦ։ൃͷجຊ w J04ΞϓϦը໘ͷΛఏڙ w ը໘্ʹ6*ύʔπஔՄೳ w ϨΠΞτݟͳ͕ΒฤूՄೳ 4UPSZCPBSE w
J04ΞϓϦΒ͍͠ը໘ͷڍಈΛఏڙ w ໊শɺ7JFXͱ$POUSPMMFSͱ͍͏ͭͷ ػೳ 7JFX $POUSPMMFS Λ୲͍ͬͯΔ͔Β w 6*/BWJHBUJPO$POUSPMMFSͰը໘ભҠΛ࣮ ݱ 6*7JFX$POUSPMMFS
͏͚ͩͰJ04Β͍͠ڍಈΛఏڙ w 6*7JFX$POUSPMMFSΛػೳ֨ೲͨ͠ ͷ w લͷը໘ΛQVTIɺΔ࣌QPQ͢Δڍ ಈ w ෳQVTIՄೳ w
ΔϘλϯͰલͷը໘QPQ w ΔϘλϯԡ͠ͰQPQઌΛࢦఆ w ࠨ͔Β4XJQFͰલͷը໘QPQ 6/BWJHBUJPO$POUSPMMFS ԡ͠ͰΔը໘ΛࢦఆՄೳ J1IPOFͷΤοδΛࠨ͔Βӈ εϫΠϓͰͭΔ
4UPSZCPBSEͰը ໘ΛՃ͢Δͱɺ ը໘ભҠΛ࣮ݱ
Ͱɺඪ४Ҏ֎ͷڍಈΛ ࣮ݱ͠Α͏ͱ͢Δͱ
อଘ֬ೝ DPOGJSN ΛՃ͢Δ
ඪ४ػೳʹհೖ͢Δ w ಛఆͷը໘Ͱ༰Λมߋޙʹɺ લͷը໘ʹΖ͏ͱ͢Δͱ֬ೝ ΞϥʔτͰอଘ֬ೝ͢Δ w อଘɺ͘͠อଘ͠ͳ͍Ͱ ΔΛબͿͱલͷը໘ʹΔ ֬ೝػೳΛՃ͢Δ
ඪ४ಈ࡞Λࠩ͠ସ͑Δ w OBWJHBUJPO*UFNCBDL#BS#VUUP O*UFNΛແޮԽ͢Δ w 6*#BS#VUUPO*UFN ΛࠨϘλϯ Λஔ͖͑Δ ΔϘλϯΛࠩ͠ସ͑Δ ௨ৗΔϘλϯ͔Βஔ͖͑
͜ΕͰສࣄղܾ
ͱͳΒͳ͍
(FTUVSF͕ແޮԽ w ΔϘλϯΛࠩ͠ସ͑Δͱࠨԑ ͔Βӈ1BO͢Δૢ࡞͕ແޮʹͳ Δ w 6*/BWJHBUJPO$POUSPMMFSJOUFSBD UJWF1PQ(FTUVSF3FDPHOJ[FSΛ มߋ͢Δ ΔϘλϯΛࠩ͠ସ͑ͷฐ
௨ৗΔϘλϯ͔Βஔ͖͑
6*,JU6*(FTUVSF3FDPHOJ[FS w J04ΞϓϦͰͷλοϓଞδΣενϟʔΠϕϯτΛ੍ޚ͢ΔΦϒδΣΫτ w 6*7JFX ը໘Λߏ͢Δύʔπ ʹొ w 5BQ 4XJQF
1JODI w ෳͷࢦΛݕՄೳ w ιʔείʔυ4UPSZCPBSEͰඥ͚Մೳ w EFMFHBUFͰHFTUVSFΠϕϯτͷհೖ ։࢝அɺதஅͳͲ ͕Մೳ
TUBUFϓϩύςΟͱΠϕϯτ ΠϕϯτʹδΣενϟ ʔใؚ͕·ΕΔ δΣενϟʔ͕Ωϟϯ ηϧ͞ΕΔ͜ͱ͋Δ
TUBUFFOEͰॲ ཧΛߦ͏λΠϓɻ TUBUFDIBOHF ͷ࣌ɺҐஔใͰ ॲཧΛߦ͏ɻ TUBUFϓϩύςΟͱΠϕϯτ
BDUJPOͱEFMFHBUF HFTUVSFSFDPHOJ[FSͷEFMFHBUFʹઃఆ͢Δ import UIKit class RootViewController: UIViewController { override func
viewDidLoad() { super.viewDidLoad() navigationController?.interactivePopGestureRecognizer?.addTarget(self, action: #selector(onInteractivePop(_:))) } @objc func onInteractivePop( _ gestureRecognizer: UIGestureRecognizer) { // stateΛ֬ೝ switch gestureRecognizer.state { case .began: print("began") case .changed: print("changed") case .ended: print("ended") default: break } // ҐஔใΛ֬ೝ _ = gestureRecognizer.location(in: view) } } ᶃHFTUVSFSFDPHOJ[FSʹ BDUJPOΛొ͢Δ ᶅBDUJPOͰTUBUFMPDBUJPO ΛऔಘͰ͖Δ ᶄ0CKFDUJWF$༝དྷͷػೳͳͷ Ͱ!PCKDΛϚʔΫ
BDUJPOͱEFMFHBUF BDUJPOHFTUVSFSFDPHOJ[FSʹՃ͢Δ class RootViewController: UIViewController { override func viewDidLoad() {
super.viewDidLoad() navigationController?.interactivePopGestureRecognizer?.delegate = self } } extension RootViewController: UIGestureRecognizerDelegate { func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { return true } } ᶃ EFMFHBUFʹ 6*(FTUVSF3FDPHOJ[FS%FMF HBUFʹରԠͨ͠ΦϒδΣΫτ Λઃఆ͢Δ ᶅ6*(FTUVSF3FDPHOJ[FSͷڍಈʹհೖ Ͱ͖Δɻओʹ։࢝அɺதࢭஅ ᶄ6*(FTUVSF3FDPHOJ[FS%FMFHBUFʹ ४ڌ͍ͯ͠ΔͱEFMFHBUFͱͯ͠ઃఆՄ ೳʹ
6*ύʔπʹຒΊࠐ·Εͨ6*(FTUVSF3FDPHOJ[FS w 4DSPMM7JFXͷ֦େɺεΫϩʔϧಈ࡞ w /BWJHBUJPOͷը໘ભҠ w JOUFSBDUJWF1PQ(FTUVSF3FDPHOJ[FS w ͲͷΑ͏ͳ࣮͔ҰԠӅṭ w
6*4DSFFO&EHF1BO3FDPHOJ[FS
6*4DSFFO&EHF1BO3FDPHOJ[FSᶃ w 6*(FTUVSF3FDPHOJ[FSͷੜΫϥε w &EHF1BOૢ࡞ΛΧελϚΠζՄೳ w ͦͷ߹Ξχϝʔγϣϯ੍ޚͱͦͷޙͷڍಈ࣮ඞཁ w 6*ΛεϥΠυ͢Δ w
6*Λ҉సͤ͞Δ
6*4DSFFO&EHF1BO3FDPHOJ[FSᶄ w 6*/BWJHBUJPO$POUSPMMFSʹຒΊࠐ·Εͨ 6*4DSFFO&EHF1BO3FDPHOJ[FS w Ξχϝʔγϣϯɺը໘ભҠ·Ͱඋ w OBWJHBUJPO*UFNCBDL#VUUPOΛࠩ͠ସ͑Δͱ ແޮԽ w
JOUFSBDUJWF1PQ(FTUVSF3FDPHOJ[FSͷ EFMFHFΛొ͢Δͱػೳ༗ޮ
6*4DSFFO&EHF1BO3FDPHOJ[FSᶅ Ͳ͏ͬͯ&EHF1BOͰDPO fi SNΛ࣮ݱ͢Δ ࣗલͰ&EHF1BO Λ࣮͢Δ͔ ࣗ࡞&EHF1BOͰ ػೳ࣮ 04ಠࣗͷڍಈ BOJNBUJPO
ͳͲ Λ࠶ݱ͢Δඞཁ͋Γ ͍ ͍͍͑
6*4DSFFO&EHF1BO3FDPHOJ[FSᶅ Ͳ͏ͬͯ&EHF1BOͰDPO fi SNΛ࣮ݱ͢Δ ࣗલͰ&EHF1BO Λ࣮͢Δ͔ ࣗ࡞&EHF1BOͰ ػೳ࣮ ඞཁ͕͋ͬͨ߹ɺ &EHF4XJQFͲ
ͲͷΑ͏ʹࢭΊΔ͔ ͍ ͍͍͑ EFMFHBUFͷΠϕϯτ Λ༻͢Δ &EHF1BOΛதࢭɺ ֬ೝ"MFSUΛग़͢ &EHF1BO͕࢝·Δલʹॲཧ͢Δ ͷར༻ऀޡ࡞ಈ͔ࣗͷૢ࡞͔ Θ͔Βͳ͍ BDUJPOΛར༻͢Δ
6*4DSFFO&EHF1BO3FDPHOJ[FSᶅ Ͳ͏ͬͯ&EHF1BOͰDPO fi SNΛ࣮ݱ͢Δ ࣗલͰ&EHF1BO Λ࣮͢Δ͔ ࣗ࡞&EHF1BOͰ ػೳ࣮ ඞཁ͕͋ͬͨ߹ɺ &EHF4XJQFͲ
ͲͷΑ͏ʹࢭΊΔ͔ ͍ ͍͍͑ EFMFHBUFͷΠϕϯτ Λ༻͢Δ &EHF1BOΛதࢭɺ ֬ೝ"MFSUΛग़͢ BDUJPOΛར༻͢Δ "DUJPOͷMPDBUJPOͷҐ ஔͰ֬ೝ"MFSUΛग़͢ ૢ࡞͕ૣ͗͢ΔͱΠϕϯτΛ DBUDIͰ͖ͳ͍
αϯϓϧίʔυ
IUUQTHJUIVCDPNOPUPSPJE *OUFSBDUJWF1PQ(FTUVSF5FTU
·ͱΊ w88%$લͰ4%,ʹؔ͢ΔτϐοΫ͕ͳ͍ͷͰDMBTTJDͳ6*,JU ͷʹ͍ͭͯ͠·ͨ͠ w6*4DSFFO&EHF1BO3FDPHOJ[FSΛ੍ޚ͢ΔͨΊʹز͔ͭͷํ๏͕͋ Γ·͢ wϞόΠϧΞϓϦͷηΦϦʔ͔Β֎ΕΔ࣮։ൃલஈ֊ͰͬͨΛ͔ ͚͍ͨͷͰ͢
w OPUPSPJE*OUFSBDUJWF1PQ(FTUVSF5FTU w IUUQTHJUIVCDPNOPUPSPJE *OUFSBDUJWF1PQ(FTUVSF5FTU w 6*4DSFFO&EHF1BO(FTUVSF3FDPHOJ[F Sc"QQMF%FWFMPQFS%PDVNFOUBUJPO w IUUQTEFWFMPQFSBQQMFDPN
EPDVNFOUBUJPOVJLJU VJTDSFFOFEHFQBOHFTUVSFSFDPHOJ[ FS w 4DSFFO&EHF4XJQF(FTUVSFPO J1IPOFVTJOHUIF 6*4DSFFO&EHF1BO(FTUVSF3FDPHOJ[F S5VUPSJBM4VQFS&BTZ"QQT w IUUQTTVQFSFBTZBQQTDPNCMPH TDSFFOFEHFTXJQF HFTUVSFPOJQIPOFVTJOHUIF VJTDSFFOFEHFQBOHFTUVSFSFDPHOJ[ FSUVUPSJBM ࢀߟ OPUPSPJE4QFBLFS%FDL