私は初めて静的アナライザーを使用していますが、矢印を理解するのに苦労しています。SOに関するいくつかの同様の質問を調べた後、問題はCGSizeサイズがゼロ値であるということだと思いますが、それがどのように機能するかは完全にはわかりません。
コードは次のとおりです。
- (void)keyboardDidShow:(NSNotification*)notification {
CGSize size = CGSizeMake(0, 0);
size = [self keyboardSize:notification];
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {
detailTableView.frame = CGRectMake(detailTableView.frame.origin.x, detailTableView.frame.origin.y,
detailTableView.frame.size.width, kTableViewMovableHeight + kTableViewDefaultHeight - size.height
);
//detailTableView.scrollEnabled = YES;
}
}
- (CGSize)keyboardSize:(NSNotification *)aNotification {
NSDictionary *info = [aNotification userInfo];
NSValue *beginValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
CGSize keyboardSize;
UIDeviceOrientation _screenOrientation = orientation;
if ([UIKeyboardDidShowNotification isEqualToString:[aNotification name]]) {
if (UIDeviceOrientationIsPortrait(orientation)) {
keyboardSize = [beginValue CGRectValue].size;
} else {
keyboardSize.height = [beginValue CGRectValue].size.width;
keyboardSize.width = [beginValue CGRectValue].size.height;
}
} else if ([UIKeyboardWillHideNotification isEqualToString:[aNotification name]]) {
if (_screenOrientation == orientation) {
if (UIDeviceOrientationIsPortrait(orientation)) {
keyboardSize = [beginValue CGRectValue].size;
} else {
keyboardSize.height = [beginValue CGRectValue].size.width;
keyboardSize.width = [beginValue CGRectValue].size.height;
}
// rotated
} else if (UIDeviceOrientationIsPortrait(orientation)) {
keyboardSize.height = [beginValue CGRectValue].size.width;
keyboardSize.width = [beginValue CGRectValue].size.height;
} else {
keyboardSize = [beginValue CGRectValue].size;
}
}
return keyboardSize;
}