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
Programming
0
74
UIViewController - Interactive PopGesture
札幌iPhoneアプリ開発懇談会 2025年4月勉強会資料
UIKit - UIViewController - Interactive PopGesture についてのプレゼンテーション資料。
notoroid
April 04, 2025
Tweet
Share
More Decks by notoroid
See All by notoroid
iOS26 オーディオ録音新機能 - iOS26 AVInputPickerInteraction
notoroid
0
70
Info.plist - after Xcode26.
notoroid
0
42
GeometryReader - SwiftUI
notoroid
0
79
iOS 26 SDKの新機能 (liquid抜き) - iOS26orLaterUpdateAndSceneForUIKit
notoroid
0
190
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
210
Xcodeショートカット 2025年版
notoroid
0
100
ZIPでくれ - Apple謹製 geocoding/ reverse geocoding
notoroid
0
150
WeatherKit iOS18 update - お天気の更新
notoroid
0
110
AppIntentsの用途 - AppleのGPT元年
notoroid
1
210
Other Decks in Programming
See All in Programming
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
CSC307 Lecture 02
javiergs
PRO
1
780
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
120
CSC307 Lecture 08
javiergs
PRO
0
670
高速開発のためのコード整理術
sutetotanuki
1
400
CSC307 Lecture 06
javiergs
PRO
0
680
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
MUSUBIXとは
nahisaho
0
130
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
ぼくの開発環境2026
yuzneri
0
200
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
680
Code Review Best Practice
trishagee
74
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Balancing Empowerment & Direction
lara
5
880
Mind Mapping
helmedeiros
PRO
0
80
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Git: the NoSQL Database
bkeepers
PRO
432
66k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Amusing Abliteration
ianozsvald
0
99
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
The Curse of the Amulet
leimatthew05
1
8.4k
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