gpt4 book ai didi

ios - 带有 inputAccessoryView 的 UIViewController 未被释放

转载 作者:可可西里 更新时间:2023-11-01 03:09:27 26 4
gpt4 key购买 nike

我有 UIViewController 的简单子(monad)类(下面的代码)。如果我附加 inputAccessoryView,我的 viewcontroller 永远不会被释放。如果我没有在 viewDidLoad 中设置 inputAccessoryView,则会按预期调用 dealloc。

我错过了什么吗?

@interface IMTestViewController : UIViewController

@property (nonatomic, strong) UIView *messageInputView;
@property(nonatomic, readwrite, strong) UIView *inputAccessoryView;

@end

@implementation IMTestViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

- (void)dealloc
{

}

- (void)viewDidLoad
{
[super viewDidLoad];

self.inputAccessoryView = self.messageInputView;
}

- (BOOL)canBecomeFirstResponder
{
return YES;
}

- (UIView *)messageInputView
{
if (_messageInputView == nil)
{
_messageInputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 45)];
_messageInputView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
}
return _messageInputView;
}
@end

我已经没有想法了。谢谢。

最佳答案

不幸的是,@rdelmar 的回答对我没有用。花了一些时间尝试解决它后,我找到了这篇文章:http://derpturkey.com/uitextfield-docked-like-ios-messenger/

我的目标是让输入附件 View 可见,即使键盘不可见,就像在所有 IM 应用程序中一样。我之前将我的 UIViewController 自定义类子类化,以允许它成为第一响应者并将我的自定义 subview 作为 inputAccessoryView 返回。这阻止了 View Controller 被释放。现在我将 Controller 的 View 子类化以实现与上面链接中推荐的相同的东西,一切似乎都工作正常。

编辑:经过更多测试后,我可以确认自定义 UIView 已正常释放。

编辑 2:唯一的缺点是您不能让键盘出现在 viewWillAppear 中,inputAccessoryView 还没有添加到 View 层次结构中,不能成为第一响应者。

关于ios - 带有 inputAccessoryView 的 UIViewController 未被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24596031/

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