自定义 UITextField 委托设置为 self 启动无限循环

2024-01-11

我正在编写 iPhone 应用程序,其中需要自定义 UITextField 类。对于我的文本字段,我需要缩进、文本之前的图像和最大字符数。为此,我创建了基于 UITextField 的自定义类。我所有的文本字段都将基于这个新类。我使用 Google 并搜索了 Stackoverflow,我发现在像我这样的情况下我必须使用self.delegate = self;在此期间init所以我不需要实现类似的方法textFieldShouldBeginEditing or textFieldShouldEndEditing在我的视图控制器类中。我所有的文本字段都将在故事板中创建,所以initWithCoder。结果,在输入 1、2 或 3 个符号后,我收到无限循环和应用程序崩溃(我现在使用模拟器)。有趣的是,对于数字键盘或密码键盘来说,没有这样的问题。另外,如果我在 Mac 键盘上输入符号而不是在模拟器上输入符号,也没有问题。我尝试调试,但在崩溃期间它直接跳入循环并存在错误。 如何克服这个问题呢?

附:我问question https://stackoverflow.com/questions/25870007/i-receive-exc-bad-access-using-custom-uitextfield-how-to-trace-the-issue当我收到无限循环并且有评论说self.delegate = self;可能会导致这样的循环,但我看到这个语句被广泛使用。可能是我没有正确执行此操作,但我无法弄清楚如何从 UITextField 中创建可重用的类。

EDIT:这是我的代码:

在 inti 上我初始化并设置边框颜色:

- (id)initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if (self) {

        self.layer.borderColor=[[UIColor blackColor] CGColor];
        self.delegate = self;
    }
    return self;
}

当我开始编辑时,我更改边框颜色并设置缩进(缩进集将在属性设置器中移动):

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

    // Change border of text field that is editing to orange
    textField.layer.masksToBounds=YES;
    textField.layer.borderColor=[[UIColor orangeColor] CGColor];
    textField.layer.borderWidth= 1.0f;

    UIView *spacerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, _leftIndent, 10)];
    [self setLeftViewMode:UITextFieldViewModeAlways];
    [self setLeftView:spacerView];

    return YES;
}

完成编辑后,我返回背景颜色:

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{

    // Change border of text field that is edited to black
    textField.layer.masksToBounds=YES;
    textField.layer.borderColor=[[UIColor blackColor] CGColor];
    textField.layer.borderWidth= 1.0f;

    return YES;
}

在值更改时,我检查最大字符数:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    // Restrict number of symbols in text field to "maxSymbols"
    NSUInteger oldLength = [textField.text length];
    NSUInteger replacementLength = [string length];
    NSUInteger rangeLength = range.length;

    NSUInteger newLength = oldLength - rangeLength + replacementLength;

    BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;

    return newLength <= (int)_maxSymbols || returnKey;
}

我不知道这是否是实际的答案,但我已经解决了下一个问题的答案如何在 iOS 中正确子类化 UITextField? https://stackoverflow.com/questions/25998600/how-properly-subclass-uitextfield-in-ios (from 贾斯塔芬格 https://stackoverflow.com/users/1876288/justafinger)。我不做作业self.delegate = self;在我的自定义控件中,但我有从视图控制器中的委托调用的方法。

我希望这可以帮助有像我这样问题的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义 UITextField 委托设置为 self 启动无限循环 的相关文章

  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • 如何在导航栏上添加 UIView?

    我需要覆盖UINavigationBar with UIView像这儿 除了使用带有按钮返回的自定义 UIView 作为导航栏之外 还有其他方法可以做到这一点吗 您可以将子视图添加到应用程序的基本视图 UIApplication share
  • 在 Xcode 中查找未使用的文件

    我最近开始开发一个新应用程序 它基本上是我以前制作的应用程序的副本 但做了一些更改 为了制作这个新应用程序 我复制了旧应用程序并删除了一些不需要的内容 我想知道 有没有办法知道 Xcode 中正在使用哪些类文件 或者有什么关于如何查找未使用
  • 从设备获取联系人列表时出现问题

    这段代码有什么问题 NSMutableArray contactArray NSMutableArray alloc init ABAddressBookRef addressBook ABAddressBookCreate CFArray
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • 无法在 xcode 8 beta 6 上编译 AWS CustomIdentityProvider

    我在 iOS 应用程序中使用 Amazon Cognito 和 Facebook 登录 直到 beta 5 为止此代码从这个SO线程 https stackoverflow com questions 37597388 aws cognit
  • iOS - 在相机上放置自定义叠加层(垂直对齐)。顶部黑条的大小

    我正在寻找以下问题的编程解决方案 我想在相机 iOS 上绘制自定义叠加层 我希望它位于相机输出视图的垂直中央 我已经完成了相对于屏幕而不是相机图片居中绘制自定义视图 为此 我需要获得顶部黑条的大小 我怎么才能得到它 顶部和底部栏的大小不相等
  • 依赖于不同队列上的另一个操作的 NSOperation 无法启动

    我有操作的依赖图 并且使用多个队列来组织各种操作流 例如 peopleQueue sitesQueue sessionQueue sessionQueue loginOp fetchUpdatedAccountOp peopleQueue
  • “无法取消归档名为 UITableViewController 的元素”

    我一直在按照 构建你的第二个 iOS 应用程序 教程一步步进行 在教程承诺所有错误都会消失之后 我遇到了这个错误 但直到其他错误都出现后 该错误才出现 全部更正 我尝试编译它 错误 The document MainStoryboard i
  • UIScrollView 与 UITabBarController 切断

    我有一个 UIScrollView 我将其放置在视图中 界面生成器文档 xib m h 但是 UIScrollView 的下半部分被剪切 并且由于我有一个 UITabBarController 而没有显示其下半部分 我在 appdelega
  • iOS 有 INTERNET 权限吗?

    我在 iOS 设备上的 flutter dio 包上遇到了一个奇怪的问题 我编写了一个向 url 发送 GET 请求的应用程序 Android 上一切正常 但 iOS 上的请求似乎无法通过 没有发生任何错误 什么也没有 我在 Android
  • 如何在 iPhone 中使用 XMPPFramework 创建 MultiUserChatRoom

    我正在 iPhone 中使用 XMPPFramwwork 开发聊天应用程序 我成功完成了一对一聊天 现在我想在我的应用程序中开发多用户聊天 我尝试了以下代码 但未调用 XMPPRoomDelegate 的任何委托方法 我如何开始创建聊天室
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • 如何检测 UITableView 中某个单元格的双击?

    如何检测某个单元格上的双击UITableView i e 如果用户进行了一次触摸 我想执行一个操作 如果用户进行了两次触摸 我想执行另一个操作 我还需要知道进行触摸的索引路径 我怎样才能实现这个目标 Thanks 如果您不想创建子类UITa
  • Objective-C 点表示法与类方法?

    请注意 我特别指的是点表示法与类方法一起使用 而不是与实例方法一起使用 出于好奇 我想看看如果我尝试在类方法中使用 Objective C 点表示法语法会发生什么 我的实验如下 import
  • Facebook 登录打开错误的应用程序

    我正在尝试使用 facebook 实现应用程序的登录 但每次我尝试登录时 它都建议打开错误的应用程序 我尝试了一些在这里找到的东西 但没有成功 在 Facebook 的开发者页面上我添加了一个后缀 我的 plist 如下 有谁知道发生了什么
  • dispatch_semaphore_t 重用 - 我在这里缺少什么?

    我有一些代码 其中使用dispatch semaphore t 来表示操作完成 当信号量是成员变量时 它的行为似乎不正确 我将展示有效的示例代码和似乎无效的示例代码 implementation someClass dispatch sem
  • 刷新单元格的 UITableView 队列

    我想知道如果调用 UITableView reloadData 时 UITableView 队列被刷新 是否有人可以回复我 我正在尝试这样做 但这对我没有帮助 有什么建议吗 如果你查看 UITableView 的头文件 你可以看到有一个名为
  • 带有自定义字体的 UILabel 错误呈现

    在我的 iPhone 应用程序中 我为所有 UILabel 设置了自定义字体 更准确地说 我对 UILabel 进行了子类化 重写了一个方法 在该方法中设置了自定义字体 然后将 IB 中的所有标签设置为该自定义类 现在的问题是 所有文本都渲
  • iOS 中是否需要 Google App Indexing SDK 才能使用 Google DeepLinking?

    我想用谷歌应用程序索引与我的网页和 iOS 应用程序 我支持通用链接 or 深层链接用谷歌术语 与苹果Search并相应地设置我的网页 From 谷歌文档 https developers google com app indexing i

随机推荐

  • 是否可以在悬停时仅更改 rgba 背景颜色的 alpha?

    我有一套 a 具有不同 rgba 背景颜色但具有相同 alpha 的标签 是否可以编写一个仅更改 rgba 属性的不透明度的 css 样式 代码的简单示例 a href img src div class brown Link 1 div
  • C# 泛型——为什么 lambda 可以工作,而简单方法却不能?

    我无法理解为什么 C 编译器可以推断类型 Array ConvertAll new int 1 i gt Convert ToDouble i 但不是为了 Array ConvertAll new int 1 Convert ToDoubl
  • 错误:Twilio 找不到具有指定发件人地址的频道

    我使用 twilio 作为 Whatsapp API 但现在的问题是我不断收到此错误 错误 Twilio 找不到具有指定发件人地址的频道 这是代码 const express require express const accountSid
  • 去掉图片上的注释框

    我想要做的是删除 5000 张图像中的红框 我为一个示例图像编写了一段Python代码 但我不知道哪里出了问题 我无法实现这样的目的 我很感激任何其他方法来解决这个问题 这是示例图像 https i stack imgur com fyc7
  • 如何使用 C# 获取所有复选框?

    In Asp net 我怎样才能访问每个checkbox存在于页面中使用C code 这让你每Checkbox在页面上 您可以更改form1到您想要在其中搜索的任何控件 foreach Control ctl in form1 Contro
  • 在 Android 中使用 MQTT 的基本步骤

    我是 Android 新手 希望使用 MQTT 作为来自服务器的 Android 推送通知程序 我读过有关 MQTT 的内容 但不太了解 如果有人使用过这个库 请告诉我我必须做什么才能开始使用它 我有一个 Java 服务器 在 Window
  • Javascript - 生成范围内的随机数,不包括某些数字

    基本上我正在创建一个网格并在其上绘制点 并且没有两个点可以位于完全相同的位置 3 4 与 4 3 不同 y 坐标必须在 2 和 7 之间 因此 2 3 4 5 6 7 x 坐标必须在 1 和 7 之间 我有一个 getRandom 函数 如
  • Python:BaseHTTPRequestHandler - 阅读原始文章

    如何阅读原始 http 帖子 STRING 我找到了几种用于读取帖子的解析版本的解决方案 但是我正在处理的项目提交了没有标头的原始 xml 有效负载 所以我试图找到一种方法来读取发布数据 而不将其解析为键 gt 值数组 self rfile
  • ByteBuffer 到 bigdecimal、二进制、字符串

    请检查本文底部的编辑我有一个字节缓冲区 128 位 其中有数字 我需要将其转换为大十进制 二进制 字符串 因为这些是使用 jdbc 时相应的 sql 映射 我可以使用库 API 来执行此操作吗 我看到 String valueof 不接受字
  • PHP CS Fixer File Watcher 导致 PHPStorm 中的文件缓存冲突

    I use a 文件观察者定义为这样 这是我的watchers xml file
  • 查找窗口错误 183

    有谁知道什么会导致FindWindow http msdn microsoft com en us library windows desktop ms633499 28v vs 85 29 aspx返回错误的函数 ALREADY EXIS
  • Flutter Web中如何获取本地IP

    我正在尝试在 Flutter Web 应用程序中获取本地 IP 地址 在互联网上搜索我发现了这个包 get ip0 4 0 它声明它正在网络下工作 我有这个功能 Future
  • C# 在运行时启用/禁用网络跟踪?

    在示例中 我可以发现跟踪是通过配置文件启用的 例如
  • 正确使用cudaDeviceReset()

    由于我怀疑 黑匣子 GPU 在一些较大的代码中没有完全关闭 其他人也许也是 https stackoverflow com questions 10294595 handling ctrlc exception with gpu 我会包括一
  • php - array_fill 负索引

    使用时php 数组填充 http php net manual en function array fill php和负指数 为什么php只填充第一个负索引 然后跳转到0 例如 array fill 4 4 10 应该填满 4 3 2 1
  • Windows 8 Consumer Preview + Visual Studio 11 Developer Preview 中的套接字 BUG

    我正在 Visual Studio 11 开发人员预览版中编写一个应用程序 在该应用程序使用 reader InputStreamOptions InputStreamOptions Partial 运行一段时间后出现此错误 选项集 An
  • Docker 镜像损坏?删除图层?

    系统重新启动后 现有的 docker 映像似乎已损坏 我尝试了以下方法 在该机器内重建一个泊坞窗 这有效 该图像运行良好 我拉了一个已经存在的图像 它说图层已经存在 但这个图像似乎仍然被损坏了 我觉得删除图像会有帮助 当我尝试删除时 似乎只
  • Pandas-创建一个新列,填充另一列中的观察数量

    我有一个 DataFrame 对象df 中的列值之一df is ID有许多行具有相同的 ID 我想创建一个新列num totals计算每个 ID 的观察次数 例如 这样的事情 ID Num Totals 1 3 1 3 1 3 2 2 2
  • 如何使用 Jersey (JAX-RS 2.0) 客户端启用 gzip 压缩以进行内容编码?

    我有一个使用 JAX RS 2 0 的 Jersey 实现的 Java 应用程序 我想在客户端启用 gzip 压缩 服务器已启用它 并且我已通过在 Chrome 中查看开发人员工具中客户端正在使用的特定 URL 的 大小 内容 来验证这一点
  • 自定义 UITextField 委托设置为 self 启动无限循环

    我正在编写 iPhone 应用程序 其中需要自定义 UITextField 类 对于我的文本字段 我需要缩进 文本之前的图像和最大字符数 为此 我创建了基于 UITextField 的自定义类 我所有的文本字段都将基于这个新类 我使用 Go