gpt4 book ai didi

ios - 检测空 UITextField 中的退格键

转载 作者:行者123 更新时间:2023-11-29 05:48:30 26 4
gpt4 key购买 nike

是否有任何方法可以检测何时在空的 UITextField 上按下 iPhone 键盘上的 Backspace/Delete 键?我想知道仅当 UITextField 为空时才按下 Backspace


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

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

收到此通知(调用handleTextFieldChanged函数),但当我在空字段中按Backspace键时仍然没有收到通知。有什么想法吗?


这个问题似乎有些困惑。我希望在按下 Backspace 键时收到通知。就是这样。但当 UITextField 已为空时,该解决方案也必须有效。

最佳答案

swift 4:


子类UITextField:

// MyTextField.swift
import UIKit

protocol MyTextFieldDelegate: AnyObject {
func textFieldDidDelete()
}

class MyTextField: UITextField {

weak var myDelegate: MyTextFieldDelegate?

override func deleteBackward() {
super.deleteBackward()
myDelegate?.textFieldDidDelete()
}

}

实现:

// ViewController.swift

import UIKit

class 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")
}

}

objective-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 myDelegate 设置为 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");
}

关于ios - 检测空 UITextField 中的退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com