Agenda
• What’s Taptic Engine
• How To Use
• When should I use Taptic Engine?
• Summary
Slide 19
Slide 19 text
How To Use
• Taptic EngineΛ੍ޚ͢ΔͨΊͷΫϥε
‣ UIFeedbackGenerator
‣ UINotificationFeedbackGenerator
‣ UIImpactFeedbackGenerator
‣ UISelectionFeedbackGenerator
How To Use
let generator = UISelectionFeedbackGenerator()
generator.prepare()
generator.selectionChanged()
1. GeneratorΛΠϯελϯεԽ͢Δ
2. prepare() Λݺͼग़͢ (Φϓγϣϯ)
3. selectionChanged()ͰൃՐͤ͞Δ
• ͷมԽͷͨͼʹݺΕΔϝιουͰൃಈͤ͞ΔతͰ༻͢Δ
Slide 28
Slide 28 text
Tips
• ϝΠϯεϨουͰ͔࣮͠ߦͰ͖ͳ͍
‣ αϒεϨουͰ࣮ߦ͠Α͏ͱ͢ΔͱԼهΤϥʔ͕ग़Δ
• σϑΥϧτͰFeedback͕࣮͞Ε͍ͯΔඪ४UI͋Δ
‣ UIPickerView
‣ UIRefreshControl
‣ UISwitch ͳͲ
• ը໘ऩதԻதൃՐ͞Εͳ͍
[Feedback] trying to activate the feedback engine
from a non-main thread, this is unsupported.
Slide 29
Slide 29 text
͜͜Ͱࢲࢥͬͨ
Slide 30
Slide 30 text
ಉ࣌ʹͨ͘͞Μ࣮ߦ͢Εɺ
ΑΓύϫϑϧͳ Feedback ΛൃੜͰ͖ΔͷͰʁ
Slide 31
Slide 31 text
ͬͯΈͨ
Slide 32
Slide 32 text
Maximum Feedback
let numberOfGenerators = 20 // ੜ
var generators: [UIImpactFeedbackGenerator] = []
// `generator`Λੜ
for _ in 0..
Deprecated Tips
• ಉ࣌ʹ࣮ߦ͢ΔͱɺΑΓύϫϑϧͳFeedbackΛੜ͢Δ͜ͱ
Մೳ
• ੜͨ͠FeedbackΛಉ࣌ʹ࣮ߦͰ͖Δݸ20ݸ·Ͱ
‣ 21ݸҎ্ൃੜͤ͞Α͏ͱ͢ΔͱԼهΤϥʔ͕ग़ͯɺ21ݸ
Ҏ߱ͷFeedbackൃՐ͞Εͳ͍
• ಉ࣌ʹ࣮ߦͤ͗͢͞ΔͱɺTaptic Engine ͔Βίπϯͱ͍͏Ի
͕ฉ͑͜ΔϨϕϧͷিܸʹͳΓɺނোͷݪҼͱͳΓ͏ΔՄೳ
ੑ͕͋ΔͨΊɺਖ਼͋·ΓΦεεϝͰ͖ͳ͍
[Feedback] out of channels
Slide 36
Slide 36 text
Agenda
• What’s Taptic Engine
• How To Use
• When should I use Taptic Engine?
• Summary
Slide 37
Slide 37 text
When should I use Taptic Engine?
• iOS Human Interface Guidelines ʹ Taptic Engine Λ
ͬͨϑΟʔυόοΫΛ࣮͢Δ্Ͱͷҙ͕·ͱΊ
ΒΕ͍ͯΔ
• ͜͜Ͱ͍͏ϑΟʔυόοΫͱɺΞΫγϣϯͷ݁ՌΛ
ϢʔβʔʹϑΟʔυόοΫ͢Δखஈͷ͜ͱΛࢦ͢
• Ҏ߱ͦͷҙ༁ͱ࣮ࡍʹ༻͞Ε͍ͯΔΞϓϦͷྫΛ·
ͱΊͨ༰Ͱ͋Δ
Slide 38
Slide 38 text
When should I use Taptic Engine?
• Success.
‣ ೖۚղৣͳͲ͕ޭͨ͜͠ͱΛ͑ΔͨΊʹ༻Ͱ͖·͢ɻ
When should I use Taptic Engine?
• Success.
‣ ೖۚղৣͳͲ͕ޭͨ͜͠ͱΛ͑ΔͨΊʹ༻Ͱ͖·͢ɻ
• Use haptics judiciously.
‣ ϑΟʔυόοΫશମͷҙຯ͕ബΕͯ͠·͏ͷͰɺଟ༻ආ͚·͠ΐ͏ɻ
Slide 42
Slide 42 text
When should I use Taptic Engine?
• Success.
‣ ೖۚղৣͳͲ͕ޭͨ͜͠ͱΛ͑ΔͨΊʹ༻Ͱ͖·͢ɻ
• Use haptics judiciously.
‣ ϑΟʔυόοΫશମͷҙຯ͕ബΕͯ͠·͏ͷͰɺଟ༻ආ͚·͠ΐ͏ɻ
• In general, provide haptic feedback in response to user-initiated actions.
‣ ϢʔβʔͷΞΫγϣϯʹ߹ΘͤͯϑΟʔυόοΫΛൃੜͤ͞·͠ΐ͏ɻ
ҙͷλΠϛϯάͰͷϑΟʔυόοΫҙࣝΛதஅͤ͞ɺޡղΛੜΈ·
͢ɻ
Slide 43
Slide 43 text
When should I use Taptic Engine?
• Don’t redefine feedback types.
‣ ϑΟʔυόοΫλΠϓҙਤͲ͓Γʹ༻͍ͯͩ͘͠͞ɻλεΫ͕ޭ͠
ͨ͜ͱΛϢʔβʔʹ௨͢Δʹɺ UINotificationFeedbackGenerator
ͷ UINotificationFeedbackType.success Λ༻͠ɺͦΕҎ֎ͷͷ
Θͳ͍Α͏ʹ͠·͠ΐ͏ɻ
Slide 44
Slide 44 text
When should I use Taptic Engine?
• Don’t redefine feedback types.
‣ ϑΟʔυόοΫλΠϓҙਤͲ͓Γʹ༻͍ͯͩ͘͠͞ɻλεΫ͕ޭ͠
ͨ͜ͱΛϢʔβʔʹ௨͢Δʹɺ UINotificationFeedbackGenerator
ͷ UINotificationFeedbackType.success Λ༻͠ɺͦΕҎ֎ͷͷ
Θͳ͍Α͏ʹ͠·͠ΐ͏ɻ
• Fine tune your visual experience for haptics.
‣ ࢹ֮ͱ৮֮ͷϑΟʔυόοΫΛಉ࣌ʹൃੜͤ͞Δ͜ͱͰΞΫγϣϯͱ݁Ռ
ͷΑΓਂ͍ͭͳ͕ΓΛఏڙ͠·͠ΐ͏ɻ
Slide 45
Slide 45 text
With Visual Experience For Haptics
ex.ʣYouTube
• YouTubeΞϓϦͰਧ͖ग़͕͠දࣔ͞ΕΔࡍʹ
UIImpactFeedbackGenerator ͷ .light Λಉ࣌ʹൃՐͤ͞Δ͜ͱͰɺࢹ֮
ͱ৮֮ͷϑΟʔυόοΫΛಉ࣌ʹ࣮ݱ͍ͯ͠Δ
Slide 46
Slide 46 text
When should I use Taptic Engine?
• Don’t redefine feedback types.
‣ ϑΟʔυόοΫλΠϓҙਤͲ͓Γʹ༻͍ͯͩ͘͠͞ɻλεΫ͕ޭ͠
ͨ͜ͱΛϢʔβʔʹ௨͢Δʹɺ UINotificationFeedbackGenerator
ͷ UINotificationFeedbackType.success Λ༻͠ɺͦΕҎ֎ͷͷ
Θͳ͍Α͏ʹ͠·͠ΐ͏ɻ
• Fine tune your visual experience for haptics.
‣ ࢹ֮ͱ৮֮ͷϑΟʔυόοΫΛಉ࣌ʹൃੜͤ͞Δ͜ͱͰΞΫγϣϯͱ݁Ռ
ͷΑΓਂ͍ͭͳ͕ΓΛఏڙ͠·͠ΐ͏ɻ
• Don’t rely on a single mode of communication.
‣ શͯͷ͕Haptic FeedbackΛαϙʔτ͍ͯ͠ΔΘ͚Ͱͳ͍ͷͰɺΞ
Ϋγϣϯͷ݁ՌΛHaptic Feedback͚ͩʹ͍͚ͯ͠·ͤΜɻ
Slide 47
Slide 47 text
When should I use Taptic Engine?
• Use haptics when visual feedback may be occluded.
‣ ΦϒδΣΫτΛεΫϦʔϯ্ͷॴʹυϥοά͢Δͱ͖ͳͲɺ
ࢦͰӅΕͯ͠·͍·͢ɻಛఆͷॴʹ౸ୡͨ͠ͱ͖ʹϢʔ
βʔʹHaptic FeedbackͰ௨͢Δ͜ͱΛݕ౼͍ͯͩ͘͠͞ɻ
Slide 48
Slide 48 text
When Reaching the "Edge"
ex.ʣTwitter
• TwitterΞϓϦͰը૾ͷϓϨϏϡʔը໘Ͱॖখɾ֦େͷ·Ͱ౸ୡͨ͠ͱ͖
ʹ UIImpactFeedbackGenerator ͷ .light ΛൃՐ͍ͤͯ͞Δ
• ඪ४ͷϝʔϧΞϓϦͰड৴ϘοΫεͰηϧΛࠨʹҾͬுͬͨ࣌ʹ̏ͭͷબ
ࢶ͕ݱΕɺͦͷ··ࠨʹҾͬுΓͬͯ·Ͱ౸ୡͨ͠ͱ͖ʹ
UIImpactFeedbackGenerator ͷ .medium ΛൃՐ͍ͤͯ͞Δ
ex.ʣඪ४ͷϝʔϧΞϓϦ
Slide 49
Slide 49 text
When should I use Taptic Engine?
• Use haptics when visual feedback may be occluded.
‣ ΦϒδΣΫτΛεΫϦʔϯ্ͷॴʹυϥοά͢Δͱ͖ͳͲɺ
ࢦͰӅΕͯ͠·͍·͢ɻಛఆͷॴʹ౸ୡͨ͠ͱ͖ʹϢʔ
βʔʹHaptic FeedbackͰ௨͢Δ͜ͱΛݕ౼͍ͯͩ͘͠͞ɻ
• Synchronize haptics with accompanying sound.
‣ Haptic FeedbackͰԻൃੜ͠·ͤΜɻHaptic Feedbackͱ
ಉ࣌ʹԻ͕ඞཁͰ͋Εɺ֤ࣗͰԻಉظॲཧΛ࣮͢Δඞ
ཁ͕͋Γ·͢ɻ