gpt4 book ai didi

ios - UITableViewCell Objective C 代码上的 3D Touch Peek 和 Pop。 (强制触摸)

转载 作者:可可西里 更新时间:2023-11-01 03:08:24 25 4
gpt4 key购买 nike

我需要通过使用 Force Touch 在 Objective C 中的 UITableViewCell 上启用 Peek And Pop 功能。并且还需要在默认邮件应用程序等速览 View 下显示一些操作。我是 iOS 新手,请帮助我实现目标。

最佳答案

对带有操作的 TableViewCell 和 Collection View Cell 的 Peek 和 Pop 效果

1)您应该将调用者 viewController 类作为 UIViewControllerPreviewing Delegate 来处理

@interface MyTableViewController()

2)创建一个用于存储信息的@property。

@property (nonatomic, strong) id previewingContext;

3)调用ViewDidLoad中的forceTouchIntialize方法

- (void)viewDidLoad {
[super viewDidLoad];
[self forceTochIntialize];
}

4)检查Force Touch是否可用

-(void)forceTouchIntialize{
if ([self isForceTouchAvailable]) {
self.previewingContext = [self registerForPreviewingWithDelegate:self sourceView:self.view];
}
}

- (BOOL)isForceTouchAvailable {
BOOL isForceTouchAvailable = NO;
if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)]) {
isForceTouchAvailable = self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable;
}
return isForceTouchAvailable;
}

5)指定我们要预览哪些内容的 View Controller (FOR PEEK)

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing> )previewingContext viewControllerForLocation:(CGPoint)location{

CGPoint cellPostion = [yourTableView convertPoint:location fromView:self.view];

NSIndexPath *path = yourTableView indexPathForRowAtPoint:cellPostion];

if (path) {

UITableViewCell *tableCell = [yourTableView

cellForRowAtIndexPath:path];

//Pushing to a nib File

PushViewController *previewController = [[PushViewController alloc] initWithNibName:@"PushViewController" bundle:nil];

//To Pass data to Preview ViewController

// id temp = [yourDataArray objectAtIndex:path.row];

// PushViewController.anyObject=temp;

previewingContext.sourceRect = [self.view convertRect:tableCell.frame fromView: yourTableView

]; return previewController;

}

return nil;

}

6)深压中的 POP (FOR POP)

-(void)previewingContext:(id )previewingContext commitViewController: (UIViewController *)viewControllerToCommit {
[self.navigationController showViewController:viewControllerToCommit sender:nil];
}

7)当 Controller 获取 peek 并且你向上滑动时,如果你想添加像删除、存档这样的按钮,请将此方法添加到你的 previewViewController(在本例中为“PushViewController”)

- (NSArray<id> *)previewActionItems {
UIPreviewAction *previewAction1 = [UIPreviewAction actionWithTitle:@"delete" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction *action, UIViewController *previewViewController){

}];

UIPreviewAction *previewAction2 = [UIPreviewAction actionWithTitle:@"archive" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction *action, UIViewController *previewViewController){

}];
return @[previewAction1,previewAction2];
}

关于ios - UITableViewCell Objective C 代码上的 3D Touch Peek 和 Pop。 (强制触摸),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44513327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com