gh0*_*0st 24 objective-c uitableview gestures ios
我正在尝试复制Apple在其邮件应用中使用的相同技术,用于将邮件标记为未读或在邮箱内从左向右滑动时"标记为未读".
我找到了类似的 解决方案,但仅用于从右向左滑动的手势.我希望这个相同的解决方案可以作为Apple SDK的一部分用于相反的方向.
我怎样才能实现与iOS'邮件应用程序相同的从左到右的手势效果?
Goo*_*33d 28
我找到了类似的解决方案,但仅用于 从右向左滑动的手势.
SWTableViewCell具有您可能需要的所有选项.
在对单元格进行二次取消时,只需根据需要设置左/右按钮组.
cell.leftUtilityButtons = [self leftButtons];
cell.rightUtilityButtons = [self rightButtons];
cell.delegate = self;
Run Code Online (Sandbox Code Playgroud)
通过将视图控制器设置为其委托,您可以听取按钮单击.有关如何实施的详细信息,请参见该链接
例1:
例2:
如果您正在寻找垂直堆叠的按钮,请查看此信息.
Gra*_*eph 20
我通常在表级实现它.
- (void)viewDidLoad
{
[super viewDidLoad];
UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(leftSwipe:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[self.tableView addGestureRecognizer:recognizer];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(rightSwipe:)];
recognizer.delegate = self;
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
[self.tableView addGestureRecognizer:recognizer];
}
Run Code Online (Sandbox Code Playgroud)
然后您可以控制方向并可以随意自定义
- (void)leftSwipe:(UISwipeGestureRecognizer *)gestureRecognizer
{
//do you left swipe stuff here.
}
- (void)rightSwipe:(UISwipeGestureRecognizer *)gestureRecognizer
{
//do you right swipe stuff here. Something usually using theindexPath that you get that way
CGPoint location = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
}
Run Code Online (Sandbox Code Playgroud)
归功于Jade Mind
从 iOS 11 开始,有本机规定(通过 委托方法UITableViewDelegate
)来UITableView
在两边的单元格上启用“滑动操作” :
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? //For actions at the left
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? //For actions at the right
Run Code Online (Sandbox Code Playgroud)
这些方法返回一个UISwipeActionsConfiguration
包含数组UIContextualAction
对于 a UIContextualAction
,您可以指定其标题、样式、背景颜色、动作颜色,甚至是 anUIImage
并处理其回调(显然 :-) )
这是一个示例实现:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let filterAction = UIContextualAction(style: .normal, title: "FILTER") { (action, view, bool) in
print("Swiped to filter")
}
filterAction.backgroundColor = UIColor.blue
return UISwipeActionsConfiguration(actions: [filterAction])
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老问题,但我发布这个只是为了帮助有人随机经过......
小智 5
你可以在 Swift 5 中这样做:
func tableView(_ tableView: UITableView,
leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
let closeAction = UIContextualAction(style: .normal, title: "Close", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
print("OK, marked as Closed")
success(true)
})
closeAction.image = UIImage(named: "tick")
closeAction.backgroundColor = .purple
return UISwipeActionsConfiguration(actions: [closeAction])
}
func tableView(_ tableView: UITableView,
trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
let modifyAction = UIContextualAction(style: .normal, title: "Update", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
print("Update action ...")
success(true)
})
modifyAction.image = UIImage(named: "hammer")
modifyAction.backgroundColor = .blue
return UISwipeActionsConfiguration(actions: [modifyAction])
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37286 次 |
最近记录: |