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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
430
2026年 エンジニアリング自己学習法
yumechi
0
130
「ブロックテーマでは再現できない」は本当か?
inc2734
0
960
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
3.9k
Patterns of Patterns
denyspoltorak
0
1.4k
Package Management Learnings from Homebrew
mikemcquaid
0
220
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.1k
SourceGeneratorのススメ
htkym
0
190
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
610
Oxlintはいいぞ
yug1224
5
1.3k
AI & Enginnering
codelynx
0
110
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
The Language of Interfaces
destraynor
162
26k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
64
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
92
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
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