我遇到了我认为可能是个错误的内容,但我并不完全确定。所以,如果你知道修复,我会问你。
基本上我有UIScrollView
根据UITextFields
的数量动态更改大小。它从一个大小(一个文本字段)开始,然后随着更多的添加,滚动视图的内容大小增加。这很好用。但是,当用户点击打开UIActionSheet
的按钮时,contentsize设置为0.这使得滚动视图在后来取消动作表时不可滚动。我放置了一个NSLog
语句来检查在呈现动作表之前和之后的scrollview的内容大小,它从任何(例如360)变为0。
但是,当我使用UIAlertView
时,这不会发生。如果没有解决此问题的方法,则警报视图是我的备份解决方案。我更喜欢动作表,因为它更适合任务。
我希望那里有人知道可能导致这种情况的原因以及如何解决这个问题。
谢谢!
根据要求,以下是一些相关代码:
打开操作表的代码:
- (IBAction)addImage:(id)sender {
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Take a picture", @"Choose from photo album", nil];
[actionSheet showInView:self.view];
}
这是我在添加新文本字段后如何编辑scrollView的值:
CGFloat width = self.scrollView.bounds.size.width;
CGFloat height = CGRectGetMaxY(anotherTextField.frame);
self.scrollView.contentSize = CGSizeMake(width, height);
(注意anotherTextField.frame
将是新文本字段的位置。所以像40 - 80 - 120 - 160等。)
这里是viewDidLoad
:(我没有viewDidAppear
或viewWillAppear
)
- (void)viewDidLoad {
[super viewDidLoad];
CGFloat width = self.scrollView.bounds.size.width;
CGFloat height = CGRectGetMaxY(self.textField2.frame);
self.scrollView.contentSize = CGSizeMake(width, height);
}
答案 0 :(得分:2)
您UIScrollView
的contentSize可能由NSLayoutConstraint
设置。然后UIActionSheet
导致约束为"刷新" ...
修改强>
注意界面构建器中的任何警告?它通常会告诉您约束何时能够找到UIScrollView
的可用内容大小。它实际上是一个非常复杂的问题,这个特定问题包含UIScrollView
和约束。我通常通过代码来做到这一点。
此处的最佳方式是,无论如何,通过代码设置contentSize,只需在UIScrollView
UIViewController
中设置- (void)viewDidLayoutSubviews
的contentSize即可。消息。
所以而不是
- (void)viewDidLoad
{
[super viewDidLoad];
CGFloat width = self.scrollView.bounds.size.width;
CGFloat height = CGRectGetMaxY(self.textField2.frame);
self.scrollView.contentSize = CGSizeMake(width, height);
}
有这样的话:
- (void)viewDidLoad
{
[super viewDidLoad];
// Any other code here...
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CGFloat width = self.scrollView.bounds.size.width;
CGFloat height = CGRectGetMaxY(self.textField2.frame);
self.scrollView.contentSize = CGSizeMake(width, height);
}
或以与最后手段相同的方式覆盖updateViewConstraints
......