0

在我的小部件扩展中,我只有以下代码在小部件出现时被调用,在代码中没有任何地方,我是在调整 _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"];


    }
4

0 回答 0