รูปแบบการนำทางบน iOS สมัยใหม่
(frankrausch.com)- การนำทางในแอป iOS ต้องแยกแยะลำดับชั้น โอเวอร์เลย์ และโฟลว์ภายในวิวให้ชัดเจน เพื่อให้ผู้ใช้เข้าใจ ตำแหน่งปัจจุบัน และเส้นทางย้อนกลับ
- รูปแบบเชิงโครงสร้างแบ่งเป็น Drill-Down, Flat, Pyramid และ Hub-and-Spoke โดยความหมายของการเปลี่ยนหน้าจอแตกต่างกัน เช่น การสำรวจแบบต้นไม้ การแบ่งด้วยแท็บ การย้ายระหว่างหน้าจอพี่น้อง และการกลับสู่ฮับ
- โอเวอร์เลย์เป็นกลไกสำหรับดึงความสนใจ แต่ระดับการบล็อกหน้าจอด้านหลังและการกระทำที่ผู้ใช้ต้องทำจะแตกต่างกันตาม ความเป็นโมดัลและระดับแรงเสียดทาน
- การนำทางแบบฝังควรอยู่ภายในวิวหรือโมดัลเฉพาะ และต้องออกแบบไม่ให้ การเปลี่ยนสถานะ หรือโฟลว์แบบ Step-by-Step ดูเหมือนการย้ายลำดับชั้น
- แท็บต้องคาดเดาได้ ปุ่ม Cancel ไม่ควรทิ้งข้อมูลทันที และในแอป iOS การรักษา ขอบเขตของลำดับชั้น สถานะ และโมดัล ให้ชัดเจนเหมาะสมกว่าการย้ายไปมาอย่างไร้แบบแผน
สามแกนของการนำทางบน iOS
- โดยทั่วไป แอป iOS มักประกอบด้วย ต้นไม้ลำดับชั้นแบบคงที่ หลายระดับ
- การนำทางเชิงโครงสร้างมีหน้าที่ช่วยให้ผู้ใช้เข้าใจว่ามาจากไหน อยู่ตรงไหนในลำดับชั้น และจะกลับไปยังตำแหน่งเดิมได้อย่างไร
- โอเวอร์เลย์สามารถปรากฏเหนือบริบทใดก็ได้ และอาจซ้อนทับบนโอเวอร์เลย์อื่นได้ด้วย
- โอเวอร์เลย์แบบโมดัล จะไม่หายไปจนกว่าผู้ใช้จะทำบางอย่าง และจะบล็อกอินเทอร์เฟซด้านหลัง
- โอเวอร์เลย์แบบไม่ใช่โมดัล จะไม่บล็อกแอป
- การนำทางแบบฝังเหมาะกับการรวมไว้ภายในวิวหรือโอเวอร์เลย์แบบโมดัลเฉพาะ ให้สอดคล้องกับโมเดลเชิงโครงสร้างและเชิงพื้นที่ของ iOS
รูปแบบการนำทางเชิงโครงสร้าง
-
Drill-Down
- Drill-Down คือรูปแบบการสำรวจ โครงสร้างแบบต้นไม้ ของข้อมูลผ่านรายการทีละระดับ
- แอนิเมชันการเปลี่ยนหน้าจอสื่อถึง การเคลื่อนที่ในแนวนอน ระหว่างคอลัมน์
- การเคลื่อนไปทางขวาหมายถึงการเข้าไปยังระดับที่ลึกขึ้นของลำดับชั้นต้นไม้
- การเคลื่อนไปทางซ้ายหมายถึงการกลับไปยังลำดับชั้นที่สูงกว่า
- การนำทางแบบ Drill-Down เป็นโครงสร้าง modeless ดังนั้นคำถามอย่างการบันทึกหรือไม่บันทึกจะไม่ขัดจังหวะการสำรวจลำดับชั้น
- Navigation Bar แสดงชื่อหน้าจอปัจจุบัน และ Disclosure indicator ในแถวรายการแสดงว่าสามารถเข้าไปยังลำดับชั้นที่ลึกขึ้นได้
- ปุ่ม Back เป็นเส้นทางที่ชัดเจนในการกลับไปยังลำดับชั้นด้านบน และหากมีพื้นที่เพียงพอ ควรใช้ชื่อหน้าจอแม่เป็นป้ายกำกับแทน “Back” ทั่วไป
- การปัดจากขอบซ้ายของหน้าจอไปทางขวาทำหน้าที่เดียวกับปุ่ม Back
- การใช้งานแบบกำหนดเองควรให้การเปลี่ยนหน้าจอที่โต้ตอบได้และยกเลิกได้ ซึ่งควบคุมด้วย screen-edge pan gesture เหมือนมาตรฐาน iOS
- สำหรับภาษาที่อ่านจากขวาไปซ้าย ทิศทางการนำทางและตำแหน่งคอนโทรลจะถูก มิเรอร์ให้สอดคล้องกับทิศทางการอ่าน
- โครงสร้างต้นไม้สามารถสร้างแบบไดนามิกเพื่อการกรองฐานข้อมูลได้
- ในแอปเพลง สามารถ Drill-Down ไปยังอัลบั้มเดียวกันจากจุดเริ่มต้นที่ต่างกัน เช่น Artist, Album, Genre และใช้ร่วมกับอินเทอร์เฟซค้นหาได้
- Drill-Down คือรูปแบบแปรผันแบบ หนึ่งคอลัมน์ต่อหน้าจอ ของ Miller columns สไตล์ macOS Finder
-
Flat
- รูปแบบ Flat แบ่งลำดับชั้นที่ระดับรากและแสดงด้วย tab bar
- บน iPad สามารถแสดงเป็น sidebar ได้
- รายการใน tab bar ถูกคัดเลือกโดยยึดฟีเจอร์หลักของแอปเป็นศูนย์กลาง และสร้างความคาดหวังของผู้ใช้กับ mental model ต่อแอป
- รายการหนึ่งใน tab bar จะถูกเลือกอยู่เสมอ และการเลือกที่ใช้งานอยู่จะกำหนดสิ่งที่แสดงในพื้นที่เนื้อหาหลักของแอป
- รายการ tab bar ที่เลือกอยู่ในปัจจุบันไม่ควรถูกเปลี่ยนแบบโปรแกรมโดยไม่มีการโต้ตอบจากผู้ใช้ หรือเปลี่ยนทางอ้อม เช่น จากการแตะปุ่มอื่นในอินเทอร์เฟซ
- tab bar จะยังคงมองเห็นได้ทั่วทั้งหน้าจอของแอป ยกเว้นกรณีถูกบังชั่วคราวด้วย modal sheet
- แท็บอาจใช้เป็นตัวกรอง หรือเป็นจุดเข้าใช้งานที่แตกต่างกันสำหรับคอลเลกชันเนื้อหาขนาดใหญ่ เช่น คลังเพลง วิดีโอ หรือรูปภาพ
- แต่ละเซกชันรักษา สถานะการนำทาง ของลำดับชั้นย่อยของตนเอง
- รายการ tab bar ต้องทำงานอย่างคาดเดาได้ และไม่ควรเปิด sheet หรือเรียกใช้การกระทำ
- เมนู Hamburger คือวิธีนำทางแบบซ่อนที่ตรงข้ามกับ tab bar
- หากอินเทอร์เฟซการนำทางทั้งหมดถูกซ่อนไว้หลังไอคอนเล็ก ๆ ความสามารถในการค้นพบจะลดลง
- เมนูนี้เคยเป็นที่นิยมบน iOS ราวปี 2015 แต่หลังจากมีงานวิจัยว่า tab bar ค้นพบได้ง่ายกว่ามาก ผู้สร้างแอปจึง เลิกใช้เมนู Hamburger
- รูปแบบ Flat แบ่งลำดับชั้นที่ระดับรากและแสดงด้วย tab bar
-
Pyramid
- รูปแบบ Pyramid ช่วยให้ย้ายอย่างรวดเร็วระหว่างวิวพี่น้องในระดับลำดับชั้นเดียวกัน โดยไม่ต้องกลับไปยังหน้าจอแม่
- ในแอปสื่อ เจสเจอร์ปัดแนวนอนมักถูกใช้เพื่อย้ายระหว่างวิวพี่น้อง
- สามารถใช้ปุ่มได้เช่นกัน เช่น ปุ่มลูกศรเชฟรอน Next Message และ Previous Message ในแอป iOS Mail
- แอป iOS Photos เป็นตัวอย่างของรูปแบบ Pyramid
- แตะรูปภาพเพื่อเปิดเต็มหน้าจอ แล้วปัดซ้ายขวาเพื่อเลื่อนดูภาพที่อยู่ติดกัน
- สำหรับคอลเลกชันขนาดเล็ก ใช้ page control เพื่อแสดงจำนวนรายการทั้งหมดและตำแหน่งของรายการปัจจุบันในบรรดารายการพี่น้อง
- iOS App Switcher ใช้รูปแบบ Pyramid สำหรับย้ายอย่างรวดเร็วระหว่างแอป และให้การนำทางที่เร็วกว่าการผ่านหน้าจอ Home
-
Hub-and-Spoke
- รูปแบบ Hub-and-Spoke เหมาะเมื่อมีคอลเลกชันขนาดใหญ่ที่ไม่เกี่ยวข้องกันอยู่ที่ระดับบนสุดของลำดับชั้น
- หากต้องสลับระหว่างวิวลูกแบบเต็มหน้าจอ ต้องกลับไปยังฮับก่อนเสมอ
- หน้าจอ Home ของ iOS คือคอลเลกชันของแอปพลิเคชันทั้งหมดที่ติดตั้งไว้ และทำหน้าที่เป็น สถานะเป็นกลาง ที่เชื่อถือได้ของระบบปฏิบัติการ
- Home indicator ที่ด้านล่างของหน้าจอเป็น ทางออก ที่เรียนรู้ง่ายและใช้งานได้เสมอ ซึ่งพาผู้ใช้กลับไปยังอินเทอร์เฟซหน้าจอ Home ที่คุ้นเคย
- รูปแบบนี้แทบไม่ถูกใช้ภายในแอป
- ภายในแอปแทบไม่มีกรณีที่ต้องการการแยกส่วนอย่างแข็งแรงเท่ากับการแยกระหว่างแอปพลิเคชันในระดับระบบปฏิบัติการ
การนำทางแบบโอเวอร์เลย์
-
High-Friction Modal
- โอเวอร์เลย์ High-Friction Modal จะบล็อกหน้าจอด้านหลังจนกว่าผู้ใช้จะตัดสินใจ เช่น sheet หรือกล่องโต้ตอบแจ้งเตือนที่มีหลายการกระทำ
- ในการเขียนอีเมลหรือสร้างอีเวนต์ปฏิทิน จำเป็นต้องเลือกว่าจะดำเนินต่อด้วย Done หรือ Send หรือเปลี่ยนใจด้วย Cancel
- ปุ่ม Cancel ไม่ควรทิ้งสถานะหรือข้อมูลใด ๆ โดยตรง
- เมื่อแตะ Cancel ใน modal sheet ควรแสดงกล่องโต้ตอบยืนยันเพิ่มเติมเป็นมาตรการป้องกันเสมอ
- ในกล่องโต้ตอบแจ้งเตือน Cancel ต้องไม่เป็นการกระทำแบบทำลายข้อมูลโดยเด็ดขาด
- โมดัลมุ่งเน้นการทำงานเฉพาะและเป็นอิสระให้เสร็จสิ้น เช่น การเขียนอีเมลหรือเพิ่มอีเวนต์ปฏิทิน
-
Low-Friction Modal
- Low-Friction Modal บล็อกส่วนที่เหลือของแอป เช่น sheet, menu, popover แต่ไม่บังคับให้ตัดสินใจแบบ “เลือกอย่างใดอย่างหนึ่ง”
- ควรปิดได้ง่าย เช่น กดปุ่มปิดหรือปัด sheet ลงแล้วหายไป
- เมื่อแตะนอก context menu หรือ popover ก็จะหายไป
- กล่องโต้ตอบแจ้งเตือนที่มีเพียงปุ่ม OK ปิดได้ง่าย แต่ แรงเสียดทานต่ำ ไม่ได้เท่ากับ ไม่มีแรงเสียดทาน
- ควรหลีกเลี่ยงการแจ้งเตือนที่มีการกระทำเดียวให้มากที่สุด
- เพราะขัดจังหวะโฟลว์ของผู้ใช้ และมักแทนที่ได้ด้วยข้อความแบบ inline หรือการแจ้งเตือนแบบไม่ใช่โมดัล
-
Non-Modal
- โอเวอร์เลย์ Non-Modal ปิดทับบางส่วนของหน้าจอ แต่ไม่บล็อกอินเทอร์เฟซด้านหลัง
- เนื่องจากเป็นแบบไม่บล็อก จึงมีแรงเสียดทานน้อยมากหรือไม่มีเลย
- อาจปรากฏขึ้นเพื่อตอบสนองต่อทริกเกอร์จากภายนอกแอป เช่น การแจ้งเตือนของระบบปฏิบัติการ
- หากหายไปโดยอัตโนมัติ ควรให้ข้อมูลรอบข้างที่เหลือบเห็นได้ในทันทีโดยรบกวนน้อยที่สุด
- โอเวอร์เลย์แบบไม่ใช่โมดัลชั่วคราวอาจมีการโต้ตอบแบบเลือกได้
- เช่น แตะการแจ้งเตือน หรือปัดตัวแสดงระดับเสียงก่อนที่มันจะหายไปเพื่อปรับระดับเสียง
- โอเวอร์เลย์ที่ไม่บล็อกส่วนที่เหลือของแอป และไม่ปรากฏหรือหายไปโดยอัตโนมัติ อาจเรียกว่า palette
การนำทางแบบฝัง
-
State Change
- วิวหนึ่งอาจมีได้หลาย สถานะ
- วิวรายการสามารถมีสถานะ empty, loading, populated ได้ โดยไม่ดูเหมือนตำแหน่งในลำดับชั้นการนำทางเปลี่ยนไป
- ต้องตรวจสอบให้แน่ใจว่าการเปลี่ยนสถานะไม่ได้เป็นลำดับชั้นจริง ๆ และไม่ใช่โมดัล
- การเปลี่ยนสถานะในตำแหน่งเดิมควรหลีกเลี่ยงการเปลี่ยนหน้าจอแบบเต็มจอ
- ตัวอย่างรวมถึงโหมดแก้ไขของรายการ อินเทอร์เฟซเว็บเบราว์เซอร์ แผนที่ถนนที่แพนได้ และภาพที่ซูมได้
- ตัวเลือกของวิวเปลี่ยนเพียงวิธีแสดงเนื้อหาโดยไม่เปลี่ยนตำแหน่งของผู้ใช้
- การสลับระหว่าง list view และ thumbnail view คือการสลับการแสดงภาพของข้อมูลเดียวกันในบริบทเดียวกันด้วยรูปแบบที่ต่างกัน
-
Step-by-Step
- รูปแบบ Step-by-Step เชื่อมหน้าจอชุดหนึ่งเป็นโฟลว์เชิงเส้น เช่น guided tour, โฟลว์การตั้งค่า, tutorial สำหรับ onboarding
- กระบวนการที่ต้องป้อนข้อมูลจำนวนมาก เช่น การชำระเงินในร้านค้าออนไลน์ ก็ต้องใช้หลายขั้นตอนเช่นกัน
- การย้ายไปข้างหน้าและย้อนกลับภายในลำดับไม่ได้เปลี่ยนระดับลำดับชั้น ซึ่งเป็นจุดที่ต่างจากรูปแบบ Drill-Down
- ควรแสดงลำดับ Step-by-Step ภายในโอเวอร์เลย์แบบโมดัล
- ปุ่ม Back ในบริบทนี้มีวัตถุประสงค์ต่างจากปุ่ม Back ของ Drill-Down เชิงลำดับชั้น
- โดยปกติกระบวนการจะจบด้วยปุ่ม Done หรือ Close ซึ่งจะปิดโมดัลที่บรรจุอยู่ด้วย
- จำนวนขั้นตอนและเส้นทางอาจเปลี่ยนไปตามตัวเลือกที่เลือก
- Wizard และ assistant เป็นชื่ออื่นของรูปแบบนี้
- กระบวนการ Step-by-Step อาจรู้สึกน่าเบื่อ
- หากคาดว่าผู้ใช้จะทำบ่อย อาจพิจารณารวมหลายขั้นตอนเป็นสถานะต่าง ๆ ภายในวิวเดียว เพื่อเพิ่มความละเอียดของข้อมูลและลดการสลับบริบท
-
Content-Driven
- การนำทางแบบ Content-Driven คือวิธีที่ไฮเปอร์ลิงก์หรือปุ่มพาผู้ใช้ข้ามไปยังหน้าหรือวิวอื่นในทันที
- การนำทางเว็บในเบราว์เซอร์ทำงานด้วยวิธีนี้
- ในแอป iOS ควรหลีกเลี่ยงรูปแบบนี้ ยกเว้นแอปที่แสดงไฮเปอร์เท็กซ์ เกมแบบ immersive หรือเนื้อหาไม่เชิงเส้นที่คล้ายกัน
- หากต้องแสดงเนื้อหาไฮเปอร์เท็กซ์ในแอป อาจพิจารณารวมไว้ในอินเทอร์เฟซเบราว์เซอร์ที่มีคอนโทรลย้อนกลับและไปข้างหน้า
- การเปลี่ยนสถานะของอินเทอร์เฟซเบราว์เซอร์ที่แยกต่างหากเข้าใจง่ายกว่าการเปลี่ยนตำแหน่งในลำดับชั้นของแอปอย่างไม่คาดคิด
- สามารถใช้ลิงก์เพื่อย้ายระหว่างแอปได้
- Deep Links ใช้ URL scheme หรือ Universal Links ที่เชื่อมกับโดเมน เพื่อนำผู้ใช้จากแอปหรือเว็บไซต์หนึ่งไปยังลำดับชั้นลึกของอีกแอปหนึ่ง
เอกสารอ้างอิง
- Apple WWDC 2022: Explore navigation design for iOS
- Jenifer Tidwell, Designing Interfaces, Third edition, O’Reilly, 2020
- Apple Human Interface Guidelines / Navigation, Archive.org, 2022-01-19
3 ความคิดเห็น
ความคิดเห็นบน Hacker News
เป็นเรื่องที่พูดกันมามากแล้ว แต่การใช้แพตเทิร์นแบบนี้ได้ดีเป็นหนึ่งในหลายเหตุผลที่ทำให้ Apollo ดีกว่าแอปทางการของ Reddit มาก
การนำทาง เจสเจอร์ และพฤติกรรมต่าง ๆ มีความสม่ำเสมอ และแนวคิดพวกนี้ก็ไม่ได้ยากอะไร แค่ใส่ใจพอที่จะรักษามันไว้ก็พอ แต่น่าหมดแรงใจที่มีแอปจำนวนมากไม่ทำแบบนั้น
คล้ายกับซูเปอร์มาร์เก็ตที่เปลี่ยนตำแหน่งชั้นวางของเป็นระยะ ๆ ถ้าการนำทาง เจสเจอร์ และพฤติกรรมสม่ำเสมอ ผู้ใช้จะได้สิ่งที่ต้องการอย่างมีประสิทธิภาพเกินไปแล้วออกไปได้เร็วเกินไป
ผมดูแลซับเรดดิตที่มีสมาชิก 30,000 คน เลยจำเป็นต้องใช้ Reddit บนมือถือให้ได้ แต่มันแทบเป็นไปไม่ได้ ทุกอย่างต้องทำหลายขั้นตอนเกินไป และไม่รู้เลยว่าตอนนี้อยู่ตรงไหน รู้สึกเหมือนขยะจริง ๆ
ผมเลิกใช้ Reddit ไปตั้งแต่หลายปีก่อนแล้ว แต่เรื่องนี้คือฟางเส้นสุดท้าย
การกลับไปหน้าหลักใช้พลังใจมากเกินไป จนผมแค่บังคับปิดแอปแล้วเปิดใหม่
ผ่านไปแค่ไม่กี่ชั้น ถ้าจะกลับไปหน้าจอแรกก็ต้องปัดหรือกดย้อนกลับไปเรื่อย ๆ จนกว่าจะถึง ซึ่งค่อนข้างยุ่งยาก อาจจะมีเจสเจอร์ลับอะไรสักอย่างที่ผมไม่รู้ก็ได้
พอเห็นคำว่า “แพตเทิร์นการนำทางของ iOS” แล้วสะดุ้งเลย มันไม่มีแพตเทิร์น และเป็นหนึ่งในสิ่งที่แย่ที่สุดของ iOS เมื่อเทียบกับ Android
บน Android การย้อนกลับทำได้ง่ายและอาจมีได้หลายความหมาย ผมใช้ iOS มานานกว่าหนึ่งปีแล้ว แต่ยังต้องหลับหูหลับตาลองหนึ่งในสอง “แพตเทิร์น” ของการย้อนกลับ แล้วค่อยไปมองหาปุ่มในตำแหน่งที่มือเอื้อมไม่ถึง และบางครั้งก็ยังใช้ไม่ได้
ไม่ควรปล่อยให้แพตเทิร์นเป็นหน้าที่ของนักพัฒนา แต่ควรแก้ที่ ระดับระบบปฏิบัติการ นักพัฒนาไม่อยากให้ผู้ใช้ออกจากบางส่วนของแอปอยู่แล้ว ลองกดย้อนกลับใน Instagram Reels ดูก็ได้
ปุ่มย้อนกลับ ไม่มีความสม่ำเสมอเลยว่ามันจะทำอะไร แม้แต่ผมที่เป็นนักพัฒนายังต้องคิดว่าในสถานการณ์หนึ่ง ๆ การย้อนกลับควรทำอะไร ควรกลับไปหน้าก่อนหน้า หรือควรขึ้นไปหนึ่งระดับในการนำทางแบบเจาะลึกก็ไม่ชัดเจน บางครั้งสองอย่างนี้เหมือนกัน แต่ก็ไม่ใช่เสมอไป
บางทีมันขึ้นไปหนึ่งระดับในโครงสร้างการนำทาง บางทีกลับไปหน้าก่อนหน้า บางทีปิดกล่องโต้ตอบ และบางครั้งถึงกับปิดแอปไปเลย ขึ้นอยู่กับบริบทแล้วเป็นไปได้ทุกพฤติกรรม และถ้ามีหลายอย่างที่ใช้ได้ ก็ไม่ชัดเจนว่าเป็นอันไหน วิธีเดียวที่จะรู้คือกดดูแล้วดูว่าเกิดอะไรขึ้น
ผมเกลียด องค์ประกอบ UI ที่กำกวม เวลาคลิกอะไรสักอย่าง ผมอยากรู้ว่าจะเกิดการทำงานอะไรขึ้น
มันสร้างความสม่ำเสมอในระดับลึก ทำให้การนำทางไม่ลำบาก คงจะดีมากถ้า iOS มีสิ่งเดียวกันฝังมาในลักษณะเดียวกัน
activity stack ทำงานข้ามแอป ดังนั้นแม้หลายแอปจะร่วมกันจัดการงานหนึ่ง เจสเจอร์ย้อนกลับก็จะพากลับไปยังหน้าจอก่อนหน้าทันทีเสมอ
บางครั้งอยู่ซ้ายบน บางครั้งซ้ายล่าง บางครั้งขวาล่าง และก็คงมีแอปที่วางไว้ที่อื่นอีก
Android มี ปุ่มย้อนกลับระดับระบบปฏิบัติการ ที่เอื้อมถึงได้เสมอแม้ใช้มือเดียว วิธีนี้เหนือกว่ามาก
ตัวอย่างเช่น ถ้าสามารถเปลี่ยนเนื้อหาของ view ได้ ก็สามารถล้างเนื้อหาทั้งหมดแล้วแทนที่ด้วยเนื้อหาใหม่ทั้งหมดได้เช่นกัน ถ้าสิ่งนี้เกิดขึ้นจากการกระทำบางอย่างของผู้ใช้ โดยสาระแล้วก็เหมือนกับ “ย้ายไปหน้าจอใหม่” แต่ถ้านักพัฒนาไม่ได้ใช้การเรียก API ของระบบปฏิบัติการตามที่เสนออย่าง
createNewViewแล้วแค่เปลี่ยนเนื้อหาใน view ปัจจุบัน เจสเจอร์ระดับระบบปฏิบัติการก็จะไม่ทำงานอย่างไรก็ตาม Apple อาจบังคับให้ต้องใช้ API ของระบบปฏิบัติการนี้เพื่อให้ผ่านการตรวจแอปได้ ถึงอย่างนั้น ผมก็ยังคิดว่าสิ่งใดคือ “view ใหม่ที่ย้อนกลับได้” และสิ่งใดคือ “view เดิมที่แค่เปลี่ยนเนื้อหา” ก็ยังมีความเป็นอัตวิสัยอยู่พอสมควร
มันแสดงรายชื่อติดต่อ แอปพลิเคชัน รายการแนวตั้ง รายการแนวนอน และรายการอื่น ๆ ด้านล่าง แถมยังต้องรู้ก่อนว่าต้องลากขึ้นถึงจะเห็น ตำแหน่งในแต่ละแอปก็ไม่เหมือนกัน และไอคอนก็ไม่มีอะไรเกี่ยวข้องกับ “แชร์” หรือ “คัดลอก/วาง” เลย
คนที่โตมากับสมาร์ตโฟนก็ปรับตัวได้เหมือนเคย ถ้าตอนที่มันเริ่มใช้กัน คุณยังอายุไม่เกิน 40–50 ปี โดยทั่วไปก็น่าจะปรับตัวได้ ของสมัยใหม่ส่วนใหญ่ถูกออกแบบมาแย่มากและมักไม่เสถียร AppleTV ก็เป็นแบบนั้น และก็เหมือนเวลาพูดถึงการเปลี่ยนรหัสผ่าน Wi‑Fi ที่ต้องทำเพื่อเลี่ยงบั๊ก แต่ไม่รู้ว่าทำไมกดปุ่มเปิด/ปิดแล้วถึงไม่รีบูต
ไม่แน่ใจว่าเกี่ยวข้องมากพอไหม แต่บน Mac และตอนนี้บน iPadOS(https://useyourloaf.com/blog/ipad-customizable-toolbars/) คอนโทรลแถบเครื่องมือ ในตัวรองรับการปรับแต่งโดยผู้ใช้ในระดับสูง
ลองใช้งานได้ในแอปเนทีฟหลายตัว รวมถึง Finder
วิดเจ็ตในตัวที่ทรงพลังเป็นสิ่งที่ถูกประเมินค่าต่ำไปบนเดสก์ท็อป Mac และก็เป็นจุดที่น่ากังวลเมื่อ SwiftUI เข้ามาครองพื้นที่มากขึ้น มันเป็นข้อดีใหญ่ของ iOS ด้วย แต่แอปมักพยายามใส่ดีไซน์ของตัวเองมากเกินไป จึงทำให้ไม่ค่อยเด่นชัดนัก
แต่ไม่รู้ว่าผมจำผิดหรือเปล่า แอป iOS สมัยก่อนเคยรองรับการปรับแต่งแถบแท็บเป็นค่าเริ่มต้นไม่ใช่หรือ แน่นอนว่ามันต่างจากแถบเครื่องมือ แต่การให้แก้ลำดับแท็บและเลือกได้ว่าจะแสดงแท็บไหนจริง ๆ ให้ความรู้สึกเหมือนเป็นสิ่งเทียบเท่าทางแนวคิดกับการปรับแต่งแถบเครื่องมือในตัว แต่หลายปีแล้วที่ไม่ได้เห็น
ตามเอกสารแล้วยังมีอยู่ อยากรู้ว่ามีใครรู้จักแอปที่ยังใช้แพตเทิร์นนี้อยู่ไหม: https://developer.apple.com/documentation/uikit/uitabbarcont...
ยังไงก็ตาม แถบแท็บก็เจ๋ง แอป Apple TV ส่วนใหญ่ที่ผมเคยใช้ใช้วิธีนี้ และประสบการณ์ที่สอดคล้องกันนั้นยอดเยี่ยมมาก
จำได้ว่าในสมัยที่ Facebook ยังพอใช้ได้ อาจจะราว ๆ iOS 7 สามารถเปลี่ยนรายการอย่างแชต ฟีด การแจ้งเตือน กลุ่ม ด้วยวิธีนี้ได้
แอปนอก Apple ที่นึกออก ล้วนย้ายไปใช้เมนูแฮมเบอร์เกอร์ที่ค้นหาได้ยากไปนานแล้ว
ความสามารถในการปรับแต่งดีมาก แต่แทบไม่พบในงานที่ทำเอง
UITabBarนั้นถูกจำกัดเรื่องการปรับแต่งอย่างน่าเจ็บปวดมาโดยตลอด แม้ในมุมโปรแกรมเมอร์ และแทบไม่มีโปรเจกต์ไหนสนใจด้านที่ให้ผู้ใช้ปรับเองผมคิดว่า Apple ล็อกหน้าตาไว้แน่นเกินไป จนสุดท้ายทำให้ทุกคนหันไปแทนที่ด้วยอย่างอื่น
ในแท็บของ Apple Music มี 2 แท็บที่ผมไม่ใช้เลยจริง ๆ อยากให้ทำให้ไปที่เพลย์ลิสต์กับอัลบั้มได้ทันที
ข้อความในข้อแรกที่ว่า “การนำทางแบบเจาะลึกไม่มีสถานะ” ดูเหมือนจะกลับกัน
หน้าจอ N ขึ้นอยู่กับสิ่งที่ทำมาก่อน และยังสามารถย้อนกลับไปตรงนั้นได้ จึงเป็นโครงสร้างที่มี สถานะเยอะมาก หากจะให้มีประโยชน์ ก็ต้องติดตามสถานะภายในจริง ๆ เช่น เนื้อหารายการขึ้นอยู่กับสถานะ N-1 ไม่อย่างนั้นคงแย่มาก
UI ที่ไม่มีสถานะน่าจะเป็นอะไรอย่างโมดัลชั้นเดียว คือมีหรือไม่มี อย่างใดอย่างหนึ่ง โดยเฉพาะถ้าเป็นแบบชั่วคราวและไม่มีวิธี “กลับมาทำต่อ” ก็ยิ่งถือว่าไม่มีสถานะได้ชัดเจนขึ้น
หลายปีมานี้เห็นการถกเถียงมากมายที่ใช้คำว่า “มีสถานะ” ในความหมายที่ต่างกันโดยสิ้นเชิง และช่วงหลังยิ่งเห็นเพิ่มขึ้นอย่างระเบิด ดังนั้นผมเริ่มสรุปได้ว่าแทบไม่มีใครตกลงกันได้ว่าหมายถึงอะไร และมีคนไม่มากที่ตระหนักถึงข้อนั้น
อยากรู้ว่า UI ที่มีสถานะ สำหรับพวกคุณคืออะไร ความต่างนี้น่าสนใจ
ในโครงสร้างแบบลำดับชั้นอย่าง iOS ลูกทุกตัวต้องมีพ่อแม่เพียงตัวเดียว ดังนั้นแค่รู้หน้าปัจจุบันก็รู้ได้ว่าปุ่ม “ย้อนกลับ” จะทำอะไร ไม่ว่าคุณจะมาถึงหน้านั้นอย่างไร มันจะขึ้นไปยังหน้าพ่อแม่หนึ่งระดับในลำดับชั้น
ใน activity stack อย่าง Android แค่หน้าปัจจุบันยังไม่พอ ต้องรู้ด้วยว่ามาถึงหน้านั้นได้อย่างไร เพราะปุ่ม “ย้อนกลับ” หมายถึงการย้อนกลับไปในประวัติ
เว็บไซต์จำนวนมากรองรับทั้งสองแบบ ปุ่มย้อนกลับของเบราว์เซอร์มีสถานะและนำทางในประวัติส่วนตัว แต่การนำทางภายในหน้าอย่าง breadcrumb มักไม่มีสถานะ เพราะไม่ขึ้นอยู่กับเส้นทางเฉพาะที่ใช้มาถึงหน้านั้น แน่นอนว่ามีข้อยกเว้น อินเทอร์เฟซค้นหาจำนวนมาก เมื่อเข้าไปดูรายการแล้วกลับด้วยการนำทางในหน้า จะกลับไปยังคำค้นก่อนหน้า ไม่ใช่หน้าพ่อแม่ จึงถือได้ว่ามีสถานะ
ตรงนี้เห็นถ้อยคำที่ไม่ถูกต้องอยู่จุดหนึ่ง คือส่วนที่ว่า “ปัดจากขอบซ้ายของหน้าจอไปทางขวา เท่ากับการกดปุ่มย้อนกลับ”
ถ้าจะทำเอง นี่ไม่ควรเป็น swipe gesture แต่ควรเป็น edge pan gesture ต้องเป็นการลากแบบโต้ตอบที่ตามนิ้วและยกเลิกได้ ไม่อย่างนั้นความรู้สึกจะผิดไป
บ่อยมากที่กำลังพิมพ์อะไรอย่างตั้งใจ แล้วแค่แตะโดนขอบโทรศัพท์นิดเดียว ความคิดเห็นทั้งอันก็หายไป
เหตุผลคือมี คนถนัดซ้าย อยู่ การเคลื่อนไหวนี้ไม่เป็นธรรมชาติและไม่สะดวกสำหรับนิ้วโป้งซ้าย จะกลับทิศทางเพื่อคนถนัดซ้ายก็ไม่ได้ เพราะถ้าอ่านจากซ้ายไปขวา การปัดไปทางขวาดูเหมือนเป็นการไปข้างหน้า ไม่ใช่ย้อนกลับ
โดยรวมแล้วไม่ชอบการนำทางด้วยการปัด บน iOS นั้นแย่เป็นพิเศษ ปัดจากล่างขึ้นบนแล้วมีเมนูบางอย่างโผล่ขึ้นมา ซึ่งมีของสำคัญอยู่จริง แต่เวลาต้องการกลับหาไม่เจอ และตอนเลื่อนเว็บเพจก็เรียกผิดอยู่เรื่อย
โดยทั่วไปกว่านั้น iOS เสื่อมถอยกลายเป็นระบบปฏิบัติการที่ซับซ้อนอย่างเลวร้ายและนำทางยากราวฝันร้าย และรู้สึกว่า Apple ต้องกลับมาใส่ใจ UI/UX อย่างจริงจังอีกครั้ง ปัญหาหลักดูเหมือนเป็นความคาดหวังว่ามือถือจะต้องจัดการงานจำนวนมากที่ตั้งแต่แรกมันไม่เหมาะจะทำ
https://sailfishos.org/
โดยรวมรู้สึกว่ามันเรียบง่ายกว่าและดีกว่า iOS กับ Android
เป็นแหล่งข้อมูลที่ดีมากสำหรับคนที่มีปัญหากับซอฟต์แวร์เชิงภาพ
ไดอะแกรม และคำอธิบายที่ชัดเจนนั้นยอดเยี่ยมมาก
Frank Rausch คือผู้สร้าง “V for Wiki” ซึ่งเป็นแอป Wikipedia ที่ดีที่สุด
ดังนั้นเมื่อเขาพูดถึงดีไซน์และประสบการณ์ผู้ใช้บน iOS ก็น่าฟังทีเดียว
https://web.archive.org/web/20211223231349/https://v-for-wik...
ใช้อยู่ทุกวัน แล้ววันหนึ่งจู่ ๆ ก็หยุดทำงาน พอลองหาใน App Store ก็หายไปแล้ว เสียใจมากจริง ๆ
อยากให้ปิดการทำงานที่ว่า “ปัดจากขอบซ้ายของหน้าจอไปทางขวาเท่ากับกดปุ่มย้อนกลับ” ได้
เวลา เลื่อนแนวนอน บนเว็บเพจที่ไม่พอดีกับหน้าจอ มันสั่งย้อนกลับโดยไม่ตั้งใจบ่อยเกินไป
iOS ทำส่วนนี้ได้ค่อนข้างดี
แอป iOS แบบทั่วไปมีสถาปัตยกรรมตายตัวคล้ายต้นไม้ลำดับชั้นหลายระดับ และโครงสร้างที่เข้มงวดนี้ทำให้ตัวเลือกการนำทางคาดเดาได้ แพตเทิร์นการนำทางเชิงโครงสร้างทำให้ผู้ใช้มั่นใจได้ว่าตนมาจากไหน อยู่ตรงไหนในลำดับชั้น และจะกลับไปยังที่เดิมได้อย่างไร
ในทางกลับกัน บน Android เจสเจอร์ย้อนกลับ บางครั้งพาไปหน้าก่อนหน้า แต่บางครั้งก็ปิดแอปไปเลย มันไม่สม่ำเสมอเกินไป จนหลังใช้ Android มา 12 ปี ผมก็ย้ายมา iOS
น่าประหลาดใจที่ทนมาได้ถึง 12 ปี ก่อนจะตัดสินใจว่าไม่ไหวอีกต่อไป
ตอนที่เริ่มพัฒนา iPhone ครั้งแรก ๆ คือช่วงที่ SDK อย่างเป็นทางการเพิ่งออกมา Apple เข้มงวดกับ Human Interface Guidelines มาก และเอกสารเกี่ยวกับองค์ประกอบของ UI ที่ดีและแพตเทิร์นมาตรฐานที่ควรทำตามก็ยอดเยี่ยมมาก
แต่พอย้ายไปสู่ดีไซน์แบบ “แฟลต” สิ่งนั้นดูเหมือนจะหายไปหมดแล้ว ผมคิดว่าเหตุผลหลักคือเอกสารเหล่านั้นไม่สมเหตุสมผลอีกต่อไป
เมื่อก่อนมันชัดเจนมาก เช่น “ทำให้การโต้ตอบของผู้ใช้มองเห็นได้ชัดเจน” แต่ตอนนี้กลายเป็น “นี่อาจคลิกได้ หรืออาจเป็นแค่ข้อความ หรืออาจต้องกดค้าง”
สวัสดีครับ! ผมเองก็เพิ่งทราบตอนแชร์บทความนี้ให้เพื่อนร่วมงานเหมือนกันว่า ตามมาตรฐานการสะกดคำภาษาเกาหลี คำที่ถูกต้องคือ
내비게이션ไม่ใช่네비게이션ครับ ฮ่าๆ ถึงจะเป็นคำที่ถอดเสียงมาจากภาษาอังกฤษ เลยอาจจะกำกวมอยู่ว่าแบบไหนถึงจะเรียกว่าถูกต้องแน่ แต่เพราะเป็นพื้นที่ที่มีหลายคนเข้ามาอ่าน ผมเลยลองแอบคอมเมนต์ไว้เผื่อว่าจะได้ใช้ตามรูปแบบมาตรฐานกันครับบทความนี้เป็นเนื้อหาที่ GPT-4 สรุปไว้ครับ ดูเหมือนว่า GPT จะใช้คำว่า "navigation" ได้ถูกต้องเป็นส่วนใหญ่ แต่บางครั้งก็ปะปนใช้ "nebigeisyeon" ด้วย ผมเลยแก้ไขไว้แล้วครับ 555