2014-01-10 63 views
0

有一些設計模式或最佳實踐可以在窗體中實現「不保存更改而退出」? 在我的Android應用程序中,我使用了布爾isChanged在視圖初始化時設置爲false,然後如果用戶關注文本字段並更改文本,我將新文本與舊文本進行比較,如果不匹配,我把布爾值設爲true。在「關閉」按鈕的壓力下,我檢查布爾值,如果這是真的,應用程序會詢問用戶是否真的要關閉視圖。如何知道何時更改文本框而不保存

+0

你也可以用iOS做同樣的事情。檢查UITextFieldDelegate方法。 – Apurv

+0

嘗試' - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)範圍replacementString:(NSString *)string'UITextField'的委託方法,它將調用每個字符更改。 – Akhilrajtr

回答

1

您可以使用您的viewController類的UITextField委託方法。

當用戶水龍頭的文本字段調用此方法

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    //Set the boolean false here. 
} 

當用戶輸入時調用此方法。

- (BOOL)textField:(UITextField *)textField 
     shouldChangeCharactersInRange:(NSRange)range 
     replacementString:(NSString *)string{ 
} 

當用戶停止鍵入和鍵盤返回時,這個方法被調用。

- (void)textFieldDidEndEditing:(UITextField *)textField{ 
// Set the boolean true here 
} 

如果布爾值爲true,則將當前值與舊值進行比較並確定流量。

if(boolean){ 
    NSString *currentString = textfield.text; 
    if([previousString isEqualToString:currentString]) 
     NSLog("not edited"); 
} 
+0

是的,那是真的。我在表單上也有一個可編輯的文本字段。我如何知道它是否已被編輯? –

+0

一旦布爾值爲true,您可以比較以前和當前文本值,如果它們不同,那麼文本字段已被編輯。看到我編輯的答案 –

0

嘗試使用TextfieldDelegate功能- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

+0

是的,這是真的。我在表單上也有一個可編輯的文本字段。我如何知道它是否已被編輯? –

相關問題