如何知道何时更改文本字段而不保存

时间:2014-01-10 10:13:02

标签: ios iphone ipad

在表单中实现“退出而不保存更改”有一些设计模式或最佳实践吗? 在我的Android应用程序中,我在视图初始化时使用了布尔值isChanged设置为false,然后如果用户聚焦文本字段并更改文本,我将新文本与旧文本进行比较,如果不匹配我放布尔值为true。在“关闭”按钮的压力下,我检查布尔值,如果它是真的,应用程序会询问用户是否要真正关闭视图。

3 个答案:

答案 0 :(得分:1)

您可以在viewController类中使用UITextfield Delegate方法。

当用户点击文本字段时,此方法将被调用

- (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
}

如果boolean为true,则将当前值与旧值进行比较并确定流量。

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

答案 1 :(得分:0)

尝试使用TextfieldDelegate函数- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

答案 2 :(得分:0)

尝试一下: UITextFieldDelegate

//MARK: - UITextfield Delegate Method -
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
    textField.resignFirstResponder()

    if textField.text == ""
    {
        AppDelegate.sharedInstance().showAlertAction(strTitle: "OK", strMessage: "Please enter keyword for search.")
        { (success) in

        }
    }
    else
    {
        let searchVC = self.storyboard?.instantiateViewController(withIdentifier: "SearchViewController") as! SearchViewController
        searchVC.strSearchVal = SAFESTRING(str: self.txtSearch.text!)
        searchVC.isFromHome = true
        self.navigationController?.pushViewController(searchVC, animated: true)
    }
    return true
}