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