總結自定義剪貼板的使用
其實自定義剪貼板也非常簡單,無非是放開響應時間,通過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");
}
好,這就是基本的剪貼板的自定義使用了,爲了更直觀,上述三篇文章均由下面相似的效果圖一張