我实现了如图所示的警示框。(警示框中包含输入框)
实现代码如下
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"test" message:@"test" preferredStyle:UIAlertControllerStyleAlert];
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
textField.placeholder = @"test";
textField.adjustsFontSizeToFitWidth = YES;
}];
UIAlertAction *cancleAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"test");
}];
[alertController addAction:cancleAction];
[self presentViewController:alertController animated:YES completion:nil];
但是在运行时每当点击弹出警示框的时候,控制台都会报这样的错误:
the behavior of the UICollectionViewFlowLayout is not defined because:
2016-01-04 22:39:43.136 temp[1819:71277] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2016-01-04 22:39:43.137 temp[1819:71277] The relevant UICollectionViewFlowLayout instance is <_UIAlertControllerCollectionViewFlowLayout: 0x7fb81d169b70>, and it is attached to <UICollectionView: 0x7fb81c10d800; frame = (0 120.667; 270 44); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7fb81d18d800>; layer = <CALayer: 0x7fb81ae37510>; contentOffset: {0, 0}; contentSize: {0, 0}> collection view layout: <_UIAlertControllerCollectionViewFlowLayout: 0x7fb81d169b70>.
2016-01-04 22:39:43.137 temp[1819:71277] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
这是为什么呢?
스택 오버플로에서 답을 찾았습니다. 이 메시지는 시뮬레이터가 iPhone6plus 및 iPhone6splus를 선택한 경우에만 콘솔에 나타납니다. 다른 시뮬레이터를 선택한 경우에는 이 문제가 발생하지 않습니다.
브레이크포인트를 치고 한번 살펴보라고 하더군요.
UICollectionViewFlowLayout 하위 클래스의 높이가 UICollectionView의 높이보다 높습니까?