我使用下面的代码添加强制触摸预览操作... Peek和pop视图效果很好,只有动作没有显示...请帮助我的代码由于某种原因没有被执行,看看:
- (NSArray<id<UIPreviewActionItem>> *)previewActionItems {
if (_previewActions == nil) {
UIPreviewAction *rateAction = [UIPreviewAction actionWithTitle:@"Rate" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
EmbededRateViewController *embededRVC = [[EmbededRateViewController alloc]initWithEmployerToRate:self.employersArray[0]];
embededRVC.view.bounds = CGRectMake(0, 0, self.view.frame.size.width - 40, 210);
[embededRVC setPopinTransitionStyle:BKTPopinTransitionStyleSnap];
BKTBlurParameters *blurParameters = [[BKTBlurParameters alloc] init];
blurParameters.tintColor = [UIColor colorWithWhite:0 alpha:0.5];
blurParameters.radius = 0.3f; // 0.3
[embededRVC setBlurParameters:blurParameters];
[embededRVC setPopinTransitionDirection:BKTPopinTransitionDirectionTop];
[self.collectionView setScrollEnabled:NO];
[self presentPopinController:embededRVC animated:YES completion:^{
NSLog(@"Popin presented !");
}];
}];
UIPreviewAction *commentAction = [UIPreviewAction actionWithTitle:@"Comment" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
NewCommentViewController *ncvc = [[NewCommentViewController alloc]initWithEmployer:self.employersArray[0]];
[self presentViewController:ncvc animated:YES completion:nil];
}];
UIPreviewAction *reportAction = [UIPreviewAction actionWithTitle:@"Report" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
ReportEmployerViewController *reportEmpVC = [[ReportEmployerViewController alloc]initWithEmployer:self.employersArray[0]];
[self presentViewController:reportEmpVC animated:YES completion:nil];
}];
UIPreviewAction *cancelAction =
[UIPreviewAction actionWithTitle:@"Cancel"
style:UIPreviewActionStyleSelected
handler:^(UIPreviewAction *action,
UIViewController *previewViewController){
}];
_previewActions = @[commentAction, rateAction, reportAction, cancelAction];
}
return _previewActions;
}
答案 0 :(得分:21)
我面临同样的问题,被困了很久。
我犯的错误是在Caller View Controller中添加了这个方法。 不要在调用者视图控制器中添加此方法,而是将其添加到被调用的视图控制器中。
例如,如果您在强制触摸View Controller A(调用者)时呈现View Controller B(调用),则将此方法添加到View Controller B(调用)。
并且太明显了,因为我们正在处理View控制器B中的按钮操作。
希望它对你有所帮助。 祝一切顺利。