私のウィジェット拡張機能には、ウィジェットが表示されたときに呼び出される次のコードのみがあり、コードのどこにもありません。フレームまたは _imageView の隠しプロパティを調整しています。ただし、このコードが実行されるたびに、コードは正常に動作し、想定どおりに動作しますが、_imageView は消えます。最初は、_imageView が何らかの理由でビューから削除されていると思ったので、_imageView のフレームをログアウトするログを追加して確認しました。ログは正常に返されます。
その後、ウィジェットが表示されなくなった場所まで通知センターをスクロールしてからスクロールバックすると、ウィジェットが再び表示されるようになると、imageView が戻ってきて問題ないことがわかりました。
このコードの実行時に _imageView が「消える」のはなぜですか?
if (copiedString && ![textArray containsObject:copiedString]) {
NSLog(@"String was found, and string hasn't been added before.");
NSLog(@"Image view frame, is it still there? %@", NSStringFromCGRect(_imageView.frame));
[textArray addObject:copiedString];
[defaults setObject:textArray forKey:@"array"];
[defaults synchronize];
} else {
NSLog(@"Nothing interesting here, contents of clipboard: string: %@ image: %@", copiedString, copiedImage);
NSLog(@"Image view frame, is it still there? %@", NSStringFromCGRect(_imageView.frame));
[defaults setObject:imageArray forKey:@"imagesArray"];
[defaults synchronize];
}
[_tableView reloadData];
if (imageArray.count != 0 && self.imageFunctionalityEnabled) {
if (![defaults boolForKey:@"autoAdd"]) {
if (textArray.count <= 5) {
self.preferredContentSize = CGSizeMake(0, 199 + textArray.count * 43.5);
} else if (textArray.count >= 5) {
self.preferredContentSize = CGSizeMake(0, 199 + 217.5);
}
} else {
if (textArray.count <= 5) {
self.preferredContentSize = CGSizeMake(0, 155 + textArray.count * 43.5);
} else if (textArray.count >= 5) {
self.preferredContentSize = CGSizeMake(0, 155 + 217.5);
}
}
} else {
if (![defaults boolForKey:@"autoAdd"]) {
if (textArray.count <= 5) {
self.preferredContentSize = CGSizeMake(0, 44 + textArray.count * 43.5);
} else if (textArray.count >= 5) {
self.preferredContentSize = CGSizeMake(0, 44 + 217.5);
}
} else {
if (textArray.count <= 5) {
self.preferredContentSize = CGSizeMake(0, 0 + textArray.count * 43.5);
} else if (textArray.count >= 5) {
self.preferredContentSize = CGSizeMake(0, 0 + 217.5);
}
}
}
[defaults setInteger:[UIPasteboard generalPasteboard].changeCount forKey:@"changeCount"];
}