2014-01-06 16 views
0

希望這是一件容易的事情。需要在自定義UITextField中調用shouldChangeCharactersInRange,並調用通知更新的視圖控制器函數

我有一個視圖控制器與一堆字段,其中一些是自定義的UITextField。

我需要對一些文本字段(長度,字符允許等)有限制,我可以找到使用shouldChangeCharactrsInRange函數的幫助。這涉及將該字段設置爲初始化時的委託。

我還需要通知視圖控制器的字段中的更改,因爲它將使用該字段中的值來重新計算其他字段。目前我有視圖控制器作爲該領域的代表。但是這樣我就無法定義我自己的shouldChangeCharactersInRange函數。

任何人都可以幫我理清這一點嗎?

預先感謝您。

+1

視圖控制器不是對文本字段施加數據限制的對象嗎?如果不是,對象是什麼? –

+0

@Scott:當他使用自定義的UITextField類時,我相信textfield是它自己的委託。 – Nerkatel

+0

Nerkatel是正確的。 – r0ddy

回答

1

您可以在viewController中實現shouldChangeCharactersInRange,然後檢查它是否由您的自定義UITextField的實例調用。如果是,請致電您的customClass的特定shouldChangeCharactersInRange。 之後,由於您首先在控制器中,您可以重新計算其他字段。這會起作用嗎? 你應該爲你的問題添加一些代碼,這將更容易解釋和幫助它。

+0

我通過在UIControlEventEditingChanged事件的字段中添加一個事件偵聽器來實現此功能,從而實現了我之前的工作。如果該字段是編輯的,只有在shouldChangeCharactersInRange函數返回TRUE時纔會執行。謝謝你的幫助。 – r0ddy

1

根據您正在編輯的自定義文本字段,您的shouldChangeCharactersInRange可以具有不同的代碼。

- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {  
    if (theTextField == textField1){  
    //do soemthing 
    } 
    else if() 
    { 
    //something different 
    } 
    //etc... 

    //Call self function to notify self that changetext was called 
} 

或者你可以設置的viewController作爲您的自定義文本框裏面微弱的類的對象,使文本框它自己的代表。然後在shouldChangeCharactersInRange函數中,您可以調用viewcontroller對象的函數。這種方式更加混亂,而不是蘋果式的。

相關問題