为了账号安全,请及时绑定邮箱和手机立即绑定

检测空UITextField中的Backspace

检测空UITextField中的Backspace

守候你守候我 2019-07-27 15:14:41
检测空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

现在只需添加MyTextFieldDelegate敬你的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");}


查看完整回答
反对 回复 2019-07-28
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞


对于一个覆盖-[UITextField deleteBackward].

检查UITextInput,特别是UIKeyInput有一个deleteBackward委托方法那,那个在按下删除键时调用。如果您正在做一些简单的事情,那么您可能会考虑只进行子类化。UILabel并使其符合UIKeyInput议定书,如SimpleTextInput而这个iPhone UIKeyInput示例注:UITextInput及其亲属(包括UIKeyInput)只能在IOS 3.2及更高版本中使用。




查看完整回答
反对 回复 2019-07-28
  • 3 回答
  • 0 关注
  • 375 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号