我有一个自定义表格视图单元格,它使用自动布局,并有一个披露指标作为附件视图.首次显示时,屏幕上单元格的单元格大小完全错误:
正如您所看到的那样,该单元占用了大约1.5个屏幕的空间:
但是,如果我旋转设备并向后旋转它看起来很好:
正如你在这里看到的,我没有做过任何复杂的事情:
我有一个非常非理想的解决方法:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
但是当你第一次看到屏幕时,这显然会导致"闪光".在更复杂的情况下,闪光灯更加明显.
我有另一个解决方法,但这会导致自动布局异常:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
BasicCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BasicCell" forIndexPath:indexPath];
cell.basicLabel.text = @"Hello this is just some text that should get the label to go over multiple lines";
[cell.basicLabel layoutIfNeeded];
return cell;
}
Run Code Online (Sandbox Code Playgroud)
例外:
至少这种方法不会给我UI闪烁.
如果我删除附件视图,它实际上完全正常.
更新:我已经向github添加了一个示例项目:https: //github.com/fwaddle/TableCellAccessoryTest
更新#2:关于这个错误的另一项工作是在代码中布局单元格.我只是尝试在代码中做同样的事情,它没有抛出警告并且工作正常.看起来像一个IB bug.
有任何想法如何解决这个问题?谢谢.
objective-c uitableview ios ios-autolayout uitableviewautomaticdimension
我有UIView
一个签名。签名是通过签名视图上的自定义 inputView 输入的。在绘制签名视图时,我利用它是第一响应者这一事实来突出显示正在编辑的视图,并且我还覆盖了该resignFirstResponder
方法以计算何时停止将其显示为正在编辑。
所以代码看起来像这样:
@implementation SignatureView
-(BOOL) becomeFirstResponder {
BOOL result = [super becomeFirstResponder];
[self showEditingMode];
return result;
}
-(BOOL) resignFirstResponder {
BOOL result = [super resignFirstResponder];
[self showViewingMode];
return result;
}
-(UIView *) inputView {
if (!keyboard)
keyboard = [[SignatureKeyboardView alloc] initWithStuff:stuff....];
return keyboard;
}
@end
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,在 iOS 11 上,resignFirstResponder
不再调用该方法。在以前版本的 iOS 上,它曾经被调用,然后我可以更改 UI 以显示它不再被编辑。
这仅在UIScrollView
设置为拖动时关闭键盘时发生,并且用户拖动UIScrollView
. 如果用户改为点击UIView
可以成为第一响应者的另一个,例如 a UITextField
,resignFirstResponder
则被调用。
我是否遗漏了 iOS11 中更改的某些内容或遇到了错误?