检测空UITextField中的Backspace是否有任何方法可以检测到背空间/删除键按在iphone键盘上UITextField那是空的?我想知道什么时候背空间只在以下情况下才按下UITextField是空的。根据@AlexReynolds在评论中的建议,我在创建文本字段时添加了以下代码:[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleTextFieldChanged:)
name:UITextFieldTextDidChangeNotification
object:searchTextField];收到此通知(handleTextFieldChanged函数),但当我按下背空间输入一个空字段。有什么想法吗?这个问题似乎有些混乱。控件时,我希望收到通知。背空间按下键。就这样。但是解决方案也必须在UITextField已经空了。
3 回答

撒科打诨
TA贡献1934条经验 获得超2个赞
SWIFT 4:
UITextField
:
// MyTextField.swiftimport UIKitprotocol MyTextFieldDelegate { func textFieldDidDelete()}class MyTextField: UITextField { var myDelegate: MyTextFieldDelegate? override func deleteBackward() { super.deleteBackward() myDelegate?.textFieldDidDelete() }}
// ViewController.swiftimport UIKitclass ViewController: UIViewController, MyTextFieldDelegate { override func viewDidLoad() { super.viewDidLoad() // initialize textField let input = MyTextField(frame: CGRect(x: 50, y: 50, width: 150, height: 40)) // set viewController as "myDelegate" input.myDelegate = self // add textField to view view.addSubview(input) // focus the text field input.becomeFirstResponder() } func textFieldDidDelete() { print("delete") }}
目标-C:
UITextField
:
//Header//MyTextField.h//create delegate protocol@protocol MyTextFieldDelegate <NSObject>@optional- (void)textFieldDidDelete; @end@interface MyTextField : UITextField<UIKeyInput>//create "myDelegate"@property (nonatomic, assign) id<MyTextFieldDelegate> myDelegate;@end//Implementation#import "MyTextField.h"@implementation MyTextField- (void)deleteBackward { [super deleteBackward]; if ([_myDelegate respondsToSelector:@selector(textFieldDidDelete)]){ [_myDelegate textFieldDidDelete]; }}@end
UIViewController
UITextFields
我的代表self
:
//View Controller Header#import "MyTextField.h"//add "MyTextFieldDelegate" to you view controller@interface ViewController : UIViewController <MyTextFieldDelegate>@end//View Controller Implementation- (void)viewDidLoad { //initialize your text field MyTextField *input = [[MyTextField alloc] initWithFrame:CGRectMake(0, 0, 70, 30)]; //set your view controller as "myDelegate" input.myDelegate = self; //add your text field to the view [self.view addSubview:input];}//MyTextField Delegate- (void)textFieldDidDelete { NSLog(@"delete");}

尚方宝剑之说
TA贡献1788条经验 获得超4个赞
-[UITextField deleteBackward]
.
UITextInput
UIKeyInput
deleteBackward
UILabel
UIKeyInput
UITextInput
UIKeyInput
添加回答
举报
0/150
提交
取消