2014-09-04 54 views
0

我動態創建兩個文本字段和增加他們EditingChanged事件就像下面這個例子創建動態UITextField並添加UIControlEvents.EditingChanged事件:誰打電話給我?

import UIKit 

var view:UIView = UIView() 

let inp1:UITextField = UITextField(frame: CGRect(x: 20, y: 0, width: 100, height: 44)) 

inp1.addTarget(view, action: "text_updated", forControlEvents: UIControlEvents.EditingChanged) 

let inp2:UITextField = UITextField(frame: CGRect(x: 20, y: 50, width: 100, height: 44)) 

inp2.addTarget(view, action: "text_updated", forControlEvents: UIControlEvents.EditingChanged) 


view.addSubview(inp1) 
view.addSubview(inp2) 

func text_updated(){ 
    println("who has called me?") 
} 

由於它是沒有辦法知道哪些控件的一個呼籲的text_updated功能。

當我通過文本字段作爲參數

func text_updated(sender: UITextField) { 

} 

我得到一個「無法識別的選擇發送到實例」異常。

怎樣才能知道哪個TextField被改變了?

回答

3

text_updatedtext_updated:之間的區別很微妙,很容易忘記冒號。

如果你想調用func text_updated(sender: UITextField)(方法與至少一個參數),你有你的文本框目標選擇設置爲"text_updated:",就像這樣:

inp2.addTarget(view, action: "text_updated:", forControlEvents: UIControlEvents.EditingChanged) 

事實上,當你處理選擇的原則是(從this Stack Overflow answer)簡單:該方法的名稱後,需要

冒號當且僅當該方法 接受一個參數。