[iOS Dev] UIPanGestureRecognizer Direction Detection

ผมเคยเขียน Blog เกี่ยวกับการใช้ UIPanGestureRecognizer
เพื่อทำการเคลื่อนย้ายวัตถุบน View ใครสนใจลองตามไปอ่านได้เลย


http://www.macbaszii.com/2012/06/ios-dev-moving-object-with.html

คราวนี้เราจะมาดูวิธีการหาว่าเรากำลังลาก (Drag) ไปทางทิศไหน ขึ้น ลง ซ้าย หรือ ขวา
โดย Code พื้นฐานที่จะต้องเขียนก็สร้าง View ขึ้นมาแล้วจัดการใส่ UIPanGestureRecognizer ก่อนนะ
ในที่นี้ UIView ผมประกาศ Property ไว้ที่ Header File ชื่อว่า controllerArea นะครับ :)
ต่อไปวิธีการหาทิศทางก็ Implement Handle Method ตามนี้เลยครับ
โดยเราจะใช้ Coordinate ของความเร็ว (Velocity) ในการลากมาเป็นตัวบอกทิศทางของ Gesture
ซึ่งมี method - (CGPoint)velocityInView:(UIView *)view; ที่จะหาค่าตรงนี้อยู่แล้ว
โดยถ้าโปรแกรมของคุณมีแค่ 2 ทิศทาง (ซ้ายและขวา หรือ บนและล่าง อย่างใดอย่างหนึ่ง)
เราจะสามารถใช้ค่า THRESHOLD ที่มาเทียบนั้นเป็น 0 ได้เลยนะครับ
เนื่องจากทิศทางจะถูกตัดสินแค่ค่าบวกและค่าลบเท่านั้น ซึ่งมันคนละทิศกันอยู่แล้ว
แต่ถ้าเรามี 4 ทิศทาง (ขึ้น ลง ซ้าย  ขวา ตามด้านบน) จะมีปัญหาแน่นอน ในกรณีที่เราลากเส้นเฉียง
เนื่องจากค่า X และ Y มันวิ่งขึ้นหรือลงพร้อมกัน ทำให้มันเพี้ยน ...
โดยจากที่ผมลองทดสอบนั้น ค่า |THRESHOLD| = 120 นั้นเป็นค่าที่ค่อนข้างโอเคเลยทีเดียว
กับความเร็วในการลากปกติในการทดสอบ ซึ่งตอนนี้ผมก็ยังหาค่าที่แน่นอนไม่ได้
หรือเราอาจจะต้องเขียนกรณีอื่นๆ มาครอบคลุม ยังไงถ้ามี Update จะมาทำให้ครับ :)

Popular posts from this blog

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น