這篇咱總結總結自訂剪貼簿的使用
其實自訂剪貼簿也非常簡單,無非是放開回應時間,通過UIMenuController自訂剪貼簿,然後就是最關鍵的實現你所用的copy方法拉。
為了方便實用,我給cell添加了長按事件,看代碼---
UILongPressGestureRecognizer *recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[cell addGestureRecognizer:recognizer];
好,事件加上了,剩下的點擊就是實現自訂剪貼簿了,上代碼:
- (void)longPress:(UILongPressGestureRecognizer *)recognizer{
if (recognizer.state == UIGestureRecognizerStateBegan) {
CopyCell *cell = (CopyCell *)recognizer.view;
[cell becomeFirstResponder];
UIMenuItem *flag = [[UIMenuItem alloc] initWithTitle:@"Flag"action:@selector(flag:)];
UIMenuItem *approve = [[UIMenuItem alloc] initWithTitle:@"Approve"action:@selector(approve:)];
UIMenuItem *deny = [[UIMenuItem alloc] initWithTitle:@"Deny"action:@selector(deny:)];
UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setMenuItems:[NSArray arrayWithObjects:flag, approve, deny, nil]];
NSLog(@".....%@",NSStringFromCGRect(cell.frame));
[menu setTargetRect:cell.frame inView:cell.superview];
[menu setMenuVisible:YES animated:YES];
}
}
通過上面這段代碼,自訂剪貼簿成功搞定,運行,你猛然會發現,操,怎麼剪貼簿沒有出來,我猜你已經想到為什麼了,因為
- (BOOL)canBecomeFirstResponder{
return YES;
}
這麼重要的一句話沒有加,OK,下面就是你所要使用的方法了
- (void)flag:(id)sender {
NSLog(@"Cell was flagged");
}
- (void)approve:(id)sender {
NSLog(@"Cell was approved");
}
- (void)deny:(id)sender {
NSLog(@"Cell was denied");
}
好,這就是基本的剪貼簿的自訂使用了,為了更直觀,上述三篇文章均由下面相似的一張