ฉันจะตรวจจับได้อย่างไรเมื่อผู้ใช้กดปุ่มแป้นพิมพ์ "ย้อนกลับ" ขณะแก้ไข UITextField ฉันต้องทำเช่นนี้เพื่อปิดแป้นพิมพ์เมื่อผู้ใช้กดปุ่ม "ย้อนกลับ"
ขอบคุณ.
ฉันจะตรวจจับได้อย่างไรเมื่อผู้ใช้กดปุ่มแป้นพิมพ์ "ย้อนกลับ" ขณะแก้ไข UITextField ฉันต้องทำเช่นนี้เพื่อปิดแป้นพิมพ์เมื่อผู้ใช้กดปุ่ม "ย้อนกลับ"
ขอบคุณ.
คำตอบ:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
อย่าลืมตั้งตัวแทนในสตอรี่บอร์ด ...
self.yourTextField.delegate = self;
. แม้แต่ช่องข้อความหลายช่องก็ใช้ได้เช่นกัน
ไม่จำเป็นต้องมีการมอบสิทธิ์นี่คือซับเดียว:
- (void)viewDidLoad {
[textField addTarget:textField
action:@selector(resignFirstResponder)
forControlEvents:UIControlEventEditingDidEndOnExit];
}
น่าเศร้าที่คุณไม่สามารถทำสิ่งนี้ได้โดยตรงใน Storyboard ของคุณ (คุณไม่สามารถเชื่อมต่อการดำเนินการกับการควบคุมที่ปล่อยออกมาใน Storyboard) แต่คุณสามารถทำได้ผ่านการดำเนินการจากตัวกลาง
UIControlEventEditingDidEndOnExit
เหตุการณ์นั้นจะถูกส่งไปก็ต่อเมื่อtextFieldShouldReturn:
วิธีการมอบหมายกลับเป็นใช่ (โดยไม่ต้องลาออกจากช่องข้อความก่อน)
YES
ใช้วิธีนี้
SWIFT 3.0
override open func viewDidLoad() {
super.viewDidLoad()
textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}
ในฟังก์ชัน enterPressed () ใส่พฤติกรรมทั้งหมดที่คุณต้องการ
func enterPressed(){
//do something with typed text if needed
textField.resignFirstResponder()
}
เวอร์ชัน Swift โดยใช้ UITextFieldDelegate:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
resignFirstResponder()
return false
}
สวิฟต์ 5
textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)
- (BOOL)textFieldShouldReturn:(UITextField *)txtField
{
[txtField resignFirstResponder];
return NO;
}
เมื่อคลิกที่ปุ่ม Enter จะมีการเรียกวิธีการมอบสิทธิ์นี้คุณสามารถจับปุ่มส่งคืนจากวิธีการมอบหมายนี้