ios - How to know when the delete button on decimal pad is clicked -


i have 4 textfields , each takes 1 character, similar lock screen. can input , move 1 textfield next textfield.
problem when want delete , move previous textfield, don't know when delete button clicked.

i'm using:

func textfield(textfield: uitextfield, shouldchangecharactersinrange range: nsrange, replacementstring string: string) -> bool 

to input , move 1 textfield another.

how know when delete key pressed?

following istvan answer, need post notification when deletebackward pressed:

class digitfield: uitextfield {     override func deletebackward() {         super.deletebackward()         nsnotificationcenter.defaultcenter().postnotificationname("deletepressed", object: nil)     }  } 

then inside viewdidload() add observer follow:

nsnotificationcenter.defaultcenter().addobserver(self, selector: "goprevious", name: "deletepressed", object: nil) 

and method:

func goprevious() {     if seconddigit.isfirstresponder() {         seconddigit.enabled = false         firstdigit.enabled = true         firstdigit.becomefirstresponder()     } else if thirddigit.isfirstresponder() {         thirddigit.enabled = false         seconddigit.enabled = true         seconddigit.becomefirstresponder()     } else if fourthdigit.isfirstresponder() {         fourthdigit.enabled = false         thirddigit.enabled = true         thirddigit.becomefirstresponder()     } } 

select text field , connect digitfield

enter image description here

you need connect each text field ibaction (using sent events editing changed)

enter image description here

the view controller code should this:

import uikit  class viewcontroller: uiviewcontroller {      @iboutlet weak var firstdigit: uitextfield!     @iboutlet weak var seconddigit: uitextfield!     @iboutlet weak var thirddigit: uitextfield!     @iboutlet weak var fourthdigit: uitextfield!      override func viewdidload() {         super.viewdidload()          nsnotificationcenter.defaultcenter().addobserver(self, selector: "goprevious", name: "deletepressed", object: nil)          firstdigit.securetextentry = true         seconddigit.securetextentry = true         thirddigit.securetextentry = true         fourthdigit.securetextentry = true          firstdigit.keyboardtype = .decimalpad         seconddigit.keyboardtype = .decimalpad         thirddigit.keyboardtype = .decimalpad         fourthdigit.keyboardtype = .decimalpad          firstdigit.becomefirstresponder()         seconddigit.enabled = false         thirddigit.enabled = false         fourthdigit.enabled = false     }      override func didreceivememorywarning() {         super.didreceivememorywarning()         // dispose of resources can recreated.     }      func goprevious() {         if seconddigit.isfirstresponder() {             seconddigit.enabled = false             firstdigit.enabled = true             firstdigit.becomefirstresponder()         } else if thirddigit.isfirstresponder() {             thirddigit.enabled = false             seconddigit.enabled = true             seconddigit.becomefirstresponder()         } else if fourthdigit.isfirstresponder() {             fourthdigit.enabled = false             thirddigit.enabled = true             thirddigit.becomefirstresponder()         }     }     // need connect each text field ibaction (using sent events editing changed) –      @ibaction func firstchanged(sender: uitextfield) {         if let digitone = sender.text.toint() {             println(digitone)             sender.enabled = false             seconddigit.enabled = true             seconddigit.becomefirstresponder()         } else {             sender.text = ""         }     }      @ibaction func secondchanged(sender: uitextfield) {         if let digittwo = sender.text.toint() {             println(digittwo)             sender.enabled = false             thirddigit.enabled = true              thirddigit.becomefirstresponder()         } else {             sender.text = ""         }     }      @ibaction func thirdchanged(sender: uitextfield) {         if let digitthree = sender.text.toint() {             println(digitthree)             sender.enabled = false             fourthdigit.enabled = true             fourthdigit.becomefirstresponder()         } else {             sender.text = ""         }     }      @ibaction func fourthchanged(sender: uitextfield) {         if let digitfour = sender.text.toint() {             println(digitfour)             sender.enabled = false         } else {             sender.text = ""         }     } }