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
71
UIViewController - Interactive PopGesture
札幌iPhoneアプリ開発懇談会 2025年4月勉強会資料
UIKit - UIViewController - Interactive PopGesture についてのプレゼンテーション資料。
notoroid
April 04, 2025
Tweet
Share
More Decks by notoroid
See All by notoroid
Info.plist - after Xcode26.
notoroid
0
37
GeometryReader - SwiftUI
notoroid
0
74
iOS 26 SDKの新機能 (liquid抜き) - iOS26orLaterUpdateAndSceneForUIKit
notoroid
0
170
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
200
Xcodeショートカット 2025年版
notoroid
0
96
ZIPでくれ - Apple謹製 geocoding/ reverse geocoding
notoroid
0
150
WeatherKit iOS18 update - お天気の更新
notoroid
0
110
AppIntentsの用途 - AppleのGPT元年
notoroid
1
200
Privacy manifests - Appleと開発コミュニティ
notoroid
1
260
Other Decks in Programming
See All in Programming
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
530
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
440
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
100
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
360
CSC307 Lecture 01
javiergs
PRO
0
670
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
210
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
690
Data-Centric Kaggle
isax1015
1
210
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.4k
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
440
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
740
Marketing to machines
jonoalderson
1
4.5k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
65
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Leo the Paperboy
mayatellez
3
1.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
250
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Prompt Engineering for Job Search
mfonobong
0
140
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