objective-c - iOS7中 textField用autolayout发生问题

 慈悲的残忍 发布于 2022-11-02 09:32

开发iOS APP 在iOS8中textField的没问题,约束也正常,换到iOS7的模拟器结果报错
报错信息为Auto Layout still required after executing -layoutSubviews. UITextField's implementation of -layoutSubviews needs to call super.'
界面一共有两个textField,点击任意一个都会触发这个bug,导致程序崩溃.请问应该怎么解决?

另附堆栈信息
*** First throw call stack:
(
0 CoreFoundation 0x000000010cdc5495 exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010c7bb99e objc_exception_throw + 43
2 CoreFoundation 0x000000010cdc531a +[NSException raise:format:arguments:] + 106
3 Foundation 0x000000010c357f19 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 189
4 UIKit 0x000000010d0dfa3a -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521
5 QuartzCore 0x000000010c1f7802 -[CALayer layoutSublayers] + 151
6 QuartzCore 0x000000010c1ec369 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 363
7 QuartzCore 0x000000010c1ec1ea _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
8 QuartzCore 0x000000010c15ffb8 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 252
9 QuartzCore 0x000000010c161030 _ZN2CA11Transaction6commitEv + 394
10 UIKit 0x000000010d07e024 _UIApplicationHandleEventQueue + 10914
11 CoreFoundation 0x000000010cd54d21 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION
+ 17
12 CoreFoundation 0x000000010cd545f2 __CFRunLoopDoSources0 + 242
13 CoreFoundation 0x000000010cd7046f __CFRunLoopRun + 767
14 CoreFoundation 0x000000010cd6fd83 CFRunLoopRunSpecific + 467
15 GraphicsServices 0x000000010f42df04 GSEventRunModal + 161
16 UIKit 0x000000010d07fe33 UIApplicationMain + 1010
17 YCPai 0x000000010a863aff main + 111
18 libdyld.dylib 0x000000010e37c5c9 start + 1
19 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Message from debugger: Terminated due to signal 6

3 个回答
  • 如果您还在通过代码使用frame进行界面布局,但是对位置计算和屏幕尺寸感到厌烦;如果您在使用AutoLayout进行界面布局,但是对其中的约束难以控制和更新,以及因为约束代码而激增您的代码量;如果您希望您的IOS6版本的应用也需要具备sizeClass的功能;那么就请使用这套布局库:

     https://github.com/youngsoft/MyLinearLayout
    

    这套布局库是以android的线性布局,相对布局,框架布局,表格布局为蓝本。同时又具有IOS的AutoLayout的功能,和部分SIZECLASS功能,以及IOS9中的UIStackView的功能,参考了masonry的一些语法机制,但是他却可以运行在IOS5版本的应用中。使用简单方便,代码清晰,而且少。 并且附带四篇教程文档:

    http://blog.csdn.net/yangtiang/article/details/46483999 线性布局
     http://blog.csdn.net/yangtiang/article/details/46795231 相对布局
    

    http://blog.csdn.net/yangtiang/article/details/48011431 表格布局

     http://blog.csdn.net/yangtiang/article/details/46492083 框架布局
    
     
    2022-11-04 03:03 回答
  • 把下面这行代码放到layoutSubviews方法最后:
    [super layoutSubviews];
    或者再末尾添加:
    [self layoutIfNeeded];

    2022-11-04 03:17 回答
  • Auto Layout still required after executing -layoutSubviews. UITextField's implementation of -layoutSubviews needs to call super.
    光看错误信息的话 你应该是

    - (void)layoutSubviews {
     //    [super layoutSubviews]; 缺少这一行代码   
    }
    
    2022-11-04 03:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有