gpt4 book ai didi

ios - 协议(protocol)实现的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:25 24 4
gpt4 key购买 nike

我要实现的是一个将单词视为字符的 UITextField。具体来说,我试图将数学表达式 sin( 看作一个字符,例如。我想通过实现我自己的 UITextInputDelegate 来解决这个问题。但是,当我实现或采用该协议(protocol)时,该协议(protocol)的四个必需函数从未被调用。我尝试通过以下方式实现它:

通过子类化 UITextField

@interface BIDUItextFieldDelegate : UITextField < UITextInputDelegate >

通过子类化 NSObject。

@interface BIDTextfieldInputDelegate : NSObject < UITextInputDelegate >

对应的.m文件包含:

@implementation BIDTextfieldInputDelegate


- (void)selectionWillChange:(id <UITextInput>)textInput
{
NSLog(@"sWill");
}

- (void)selectionDidChange:(id <UITextInput>)textInput
{
NSLog(@"sDid");
}

- (void)textWillChange:(id <UITextInput>)textInput
{
NSLog(@"tWill");
}

- (void)textDidChange:(id <UITextInput>)textInput
{
NSLog(@"tDid");
}

例如,对于第二种方法(通过子类化 NSObject),我在应用程序中显示的附加自定义 UITextfield 类的 (id) init 方法中执行以下操作:

//textInputDel is an instance of the custom NSObject class that adopts the above UITextInputDelegate protocol
self.textInputDel = [[BIDTextfieldInputDelegate alloc] init];

self.inputDelegate = self.textFieldDel;

有谁知道我做错了什么,或者有更好的解决方案吗?

最佳答案

UITextInputDelegate 不是实现的协议(protocol);相反,系统会创建一个符合 UITextInputDelegate 的对象,并将其分配为符合 UITextInput 的 First Responder 的 .inputDelegate

UITextInputDelegate 的方法是您的符合 UITextInput 的响应程序调用您的 .inputDelegate 以通知它您已更改您的通过键盘输入以外的方式进行文本或选择。

关于ios - <UITextinputDelegate> 协议(protocol)实现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243345/

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