วิธีที่สวยงามกว่าคือการยกเลิกแป้นพิมพ์เมื่อผู้ใช้แตะที่นอกกรอบของแป้นพิมพ์
ก่อนอื่นให้ตั้งค่ามุมมองของ ViewController เป็นคลาส "UIControl" ในตัวตรวจสอบตัวตนใน UIBuilder ควบคุมลากมุมมองไปยังไฟล์ส่วนหัวของ ViewController และเชื่อมโยงมันเป็นแอคชั่นกับเหตุการณ์เช่น Touch Up Inside เช่น:
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
ในไฟล์ ViewController หลัก, ViewController.m:
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
คุณสามารถใช้การแตะสองครั้งหรือสัมผัสยาวโดยใช้เทคนิคที่คล้ายกัน คุณอาจต้องตั้งค่า ViewController ของคุณให้เป็น UITextViewDelegate และเชื่อมต่อ TextView กับ ViewController วิธีนี้ใช้ได้กับทั้ง UITextView และ UITextField
ที่มา: Big Nerd Ranch
แก้ไข: ฉันต้องการเพิ่มว่าถ้าคุณใช้ UIScrollView เทคนิคด้านบนอาจไม่ทำงานได้อย่างง่ายดายผ่านตัวสร้างส่วนต่อประสาน ในกรณีนี้คุณสามารถใช้ UIGestureRecognizer และเรียกใช้วิธี [[ดูตัวเอง] endEditing: YES] วิธีการภายในแทน ตัวอย่างจะเป็น:
-(void)ViewDidLoad{
....
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer: tapRec];
....
}
-(void)tap:(UITapGestureRecognizer *)tapRec{
[[self view] endEditing: YES];
}
เมื่อผู้ใช้แตะที่ด้านนอกของแป้นพิมพ์และไม่ได้แตะพื้นที่รายการแป้นพิมพ์จะถูกยกเลิก