Posts

Showing posts with the label input

เลิกตบตีกับเรื่อง Keyboard บัง Input Field กันเถอะ

Image
มันก็ไม่ใช่ปัญหาหรอก แต่เป็น Boilerplate Code ที่ต้องเขียนเสมอๆ เวลาเราใช้ UITextField, UITextView เป็น Input Field นั่นคือเมื่อวางของพวกนี้ไว้ตรงตำแหน่งที่ Keyboard จะแสดงขึ้นมา ตัว Keyboard จะบังพวก Input Field นั้นไว้ และจะต้องเขียน Observer Code เพื่อจัดการ โดยจะต้องเขียนทุก Controller เลย วันนี้เลยจะมาแนะนำตัวช่วยนั่นคือ IQKeyboardManager ลองดูตัวอย่างจากวีดีโอนี้เลย วิธีใช้น่ะหรอ (ทำเอาผมร้องว้าวเลยล่ะ) 1. Install ผ่าน Cocoapods 3. นั่งรอเฉยๆ 2. จบ เค้าเคลมว่า CODELESS - Zero line of Code Works Automatically No More UIScrollView No More Subclasses No More Manual Work No More #imports เจ๋งมาก ไปลองใช้กันดูนะ #ของดีต้องบอกต่อ

Problem when using 'getline' with 'cin' in C++

Image
ว่าด้วยปัญหาที่ถูกตั้งคำถาม Classic เวลาเราใช้ cin ใน C++ กันเลยนะ นั่นคือการใช้ cin รับ input ที่เป็น string with whitespaces เช่น "this is a cat" ซึ่งจะเห็นได้ว่า เราจะได้แค่ "this" เก็บไว้ในตัวแปรเท่านั้น ถ้าต้องการรจะรับ Input ที่เป็น String with whitespaces ให้เปลี่ยนมาใช้ cin.getline(char_array_variable, stream_size) กรณีที่ตัวแปรเป็น Array of Character หรือ getline(cin, string_variable) ในกรณีที่ตัวแปรเป็น C++ String (#include <string>) http://www.cplusplus.com/reference/istream/istream/getline/ แต่ปัญหาที่ผมจะกล่าวถึงมาจากการที่เราไม่สามารถใช้ cin.getline กับตัวแปรชนิดอื่นๆ ได้นอกจาก string (or array of character) เราก็เลยต้องกลับไปใช้ cin นั่นแหละ ปัญหาที่เกิดขึ้นคือ ถ้าเราเรียกใช้ cin.getline ต่อจาก cin มันจะข้ามการ input ของ cin.getline ไปเลย ดังภาพครับ สาเหตุของปัญหาคือ ... คำสั่ง cin จะมี Newline Character (\n) ตอนที่เรากด Enter ติดท้ายมาเสมอ ... ทำให้เจ้า getline ที่ตามหลังมานั้นคิดว่า Newline Character เป็น stream ...

Standard Input/Output Redirection

Image
ผมเขียนโปรแกรมตัวนึง เป็นโจทย์ของการแข่งขัน ACM - ICPC Programming Contest แน่นอนว่า โจทย์ปัญหาพวกนี้ต้องการหลาย Test Case ในการทดสอบความถูกต้องของโปรแกรม ครั้นผมจะนั่งใส่ Standard Input เองก็เหนื่อยอยู่ :) ดังนั้นเรามา "หัดสบาย" กันเถอะ นี่คือ Test Case ของโจทย์ข้อนี้ครับ ... สังเกตุบรรทัดแรกจะเห็นจำนวนของ Test Case และต่อๆ มาก็จะเป็นเนื้อหาของ Test Case นั้นๆ ... ผมจึงต้องเขียนโปรแกรมให้มันรันตามจำนวน "บรรทัดแรก" ของไฟล์ที่รับเข้าไป (ในที่นี้คือ t ในไฟล์ earthquake.cpp) ดังนั้นขึ้นอยู่กับว่า คุณมีกี่ Test Case ก็มาเปลี่ยนด้วยนะ (จริงๆ มันมีวิธีเขียน Script แล้วแยกไฟล์ Test Case ด้วยนะ แต่ทำไม่เป็นน่ะ นี่คือวิธีที่ในการแข่งขันใช้ :) คราวนี้การใส่ Standard Input ก็ง่ายแสนง่ายครับ เพียงแค่ ในขั้นตอนการรัน Execute File ไฟล์ (ในที่นี้คือ a.out) ให้ใส่เครื่องหมาย < filename  แล้วตามด้วยชื่อไฟล์ที่ต้องการ :) แล้วเรายังสามารถเขียน Output ลงไฟล์ได้ด้วยนะ ส่วนวิธีการ Output มี 2 แบบคือ Overwrite และ Append ถ้าเขียนทับไฟล์เก่าเลย (Overwrite) ให้ใช้ ...

[iOS Dev] Solve Problem when Keyboard is Covered Input View (UITextField, UITextView)

Image
มันเป็นปัญหาหนึ่งของผมนะครับ ... ที่เจอมา นั่นคือ ถ้าคุณมี UI จำพวก Input (UITextField และ UITextView) อยู่ด้านล่างของจอ ... แล้วเมื่อคุณกดเพื่อจะทำการ Input ข้อมูล จะเกิดปัญหาที่ว่า "Keyboard นั้นขึ้นมาบังส่วน Input ของคุณ ทำให้คุณไม่เห็นสิ่งที่กำลัง Input อยู่" เราจะมาแก้ปัญหานี้กันด้วยความคิดง่ายๆ ที่ว่า "เมื่อมันบัง เราก็เลื่อนส่วนนั้นขึ้นไปสิ เลื่อนให้เลยตัว Keyboard ขึ้นไป" สิ่งที่เราต้องรู้คือ เมื่อไหร่ที่ Keyboard จะขึ้นมา เมื่อไหร่ที่ Keyboard จะลง ขนาดของ Keyboard (เพื่อให้เลื่อนขึ้นไปเท่าไร และ เลื่อนลงเท่าไร ตอน Keyboard ถูกเก็บ) iOS มีตัวช่วยที่จะบอกว่า Keyboard ขึ้นหรือลงครับ  พระเอกของเราวันนี้คือ NSNotificationCenter  ประกาศตัวแปรที่ต้องใช้ก่อนนะครับ ประกาศเป็น Instance Variable ไว้ที่ Implementation File (.m)  ต่อไปก็ให้ NSNotificationCenter ทำการ Observer ตัว Keyboard ว่ามันขึ้น หรือมันลง  และใส่ @selector ด้วยว่า เมื่อ Keyboard ขึ้นให้ทำอะไร และลงให้ทำอะไร ส่วนการ Implement ให้ View ขึ้นลง ก็ตามนี้ครับ เรา...