检测空UITextField中的Backspace

检测空UITextField中的Backspace

是否有任何方法可以检测到背空间/删除键按在iphone键盘上UITextField那是空的?我想知道什么时候背空间只在以下情况下才按下UITextField是空的。


根据@AlexReynolds在评论中的建议,我在创建文本字段时添加了以下代码:

[[NSNotificationCenter defaultCenter] addObserver:self
          selector:@selector(handleTextFieldChanged:)
              name:UITextFieldTextDidChangeNotification
            object:searchTextField];

收到此通知(handleTextFieldChanged函数),但当我按下背空间输入一个空字段。有什么想法吗?


这个问题似乎有些混乱。控件时,我希望收到通知。背空间按下键。就这样。但是解决方案也必须在UITextField已经空了。


守候你守候我
浏览 376回答 3
3回答

撒科打诨

SWIFT 4:子类UITextField://&nbsp;MyTextField.swiftimport&nbsp;UIKitprotocol&nbsp;MyTextFieldDelegate&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;textFieldDidDelete()}class&nbsp;MyTextField:&nbsp;UITextField&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;myDelegate:&nbsp;MyTextFieldDelegate? &nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;func&nbsp;deleteBackward()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.deleteBackward() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDelegate?.textFieldDidDelete() &nbsp;&nbsp;&nbsp;&nbsp;}}执行情况://&nbsp;ViewController.swiftimport&nbsp;UIKitclass&nbsp;ViewController:&nbsp;UIViewController,&nbsp;MyTextFieldDelegate&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;func&nbsp;viewDidLoad()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.viewDidLoad() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;initialize&nbsp;textField &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;input&nbsp;=&nbsp;MyTextField(frame:&nbsp;CGRect(x:&nbsp;50,&nbsp;y:&nbsp;50,&nbsp;width:&nbsp;150,&nbsp;height:&nbsp;40)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;set&nbsp;viewController&nbsp;as&nbsp;"myDelegate" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input.myDelegate&nbsp;=&nbsp;self &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;add&nbsp;textField&nbsp;to&nbsp;view &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.addSubview(input) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;focus&nbsp;the&nbsp;text&nbsp;field &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input.becomeFirstResponder() &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;textFieldDidDelete()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("delete") &nbsp;&nbsp;&nbsp;&nbsp;}}目标-C:子类UITextField://Header//MyTextField.h//create&nbsp;delegate&nbsp;protocol@protocol&nbsp;MyTextFieldDelegate&nbsp;<NSObject>@optional-&nbsp;(void)textFieldDidDelete; @end@interface&nbsp;MyTextField&nbsp;:&nbsp;UITextField<UIKeyInput>//create&nbsp;"myDelegate"@property&nbsp;(nonatomic,&nbsp;assign)&nbsp;id<MyTextFieldDelegate> &nbsp;myDelegate;@end//Implementation#import&nbsp;"MyTextField.h"@implementation&nbsp;MyTextField-&nbsp;(void)deleteBackward&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;[super&nbsp;deleteBackward]; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;([_myDelegate&nbsp;respondsToSelector:@selector(textFieldDidDelete)]){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[_myDelegate&nbsp;textFieldDidDelete]; &nbsp;&nbsp;&nbsp;&nbsp;}}@end现在只需添加MyTextFieldDelegate敬你的UIViewController然后把你的UITextFields&nbsp;我的代表到self://View&nbsp;Controller&nbsp;Header#import&nbsp;"MyTextField.h"//add&nbsp;"MyTextFieldDelegate"&nbsp;to&nbsp;you&nbsp;view&nbsp;controller@interface&nbsp;ViewController&nbsp;:&nbsp; UIViewController&nbsp;<MyTextFieldDelegate>@end//View&nbsp;Controller&nbsp;Implementation-&nbsp;(void)viewDidLoad&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//initialize&nbsp;your&nbsp;text&nbsp;field &nbsp;&nbsp;&nbsp;&nbsp;MyTextField&nbsp;*input&nbsp;=&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[MyTextField&nbsp;alloc]&nbsp;initWithFrame:CGRectMake(0,&nbsp;0,&nbsp;70,&nbsp;30)]; &nbsp;&nbsp;&nbsp;&nbsp;//set&nbsp;your&nbsp;view&nbsp;controller&nbsp;as&nbsp;"myDelegate" &nbsp;&nbsp;&nbsp;&nbsp;input.myDelegate&nbsp;=&nbsp;self; &nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;your&nbsp;text&nbsp;field&nbsp;to&nbsp;the&nbsp;view &nbsp;&nbsp;&nbsp;&nbsp;[self.view&nbsp;addSubview:input];}//MyTextField&nbsp;Delegate-&nbsp;(void)textFieldDidDelete&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;NSLog(@"delete");}

尚方宝剑之说

对于一个覆盖-[UITextField deleteBackward].检查UITextInput,特别是UIKeyInput有一个deleteBackward委托方法那,那个总在按下删除键时调用。如果您正在做一些简单的事情,那么您可能会考虑只进行子类化。UILabel并使其符合UIKeyInput议定书,如SimpleTextInput而这个iPhone UIKeyInput示例.&nbsp;注:UITextInput及其亲属(包括UIKeyInput)只能在IOS 3.2及更高版本中使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java