UIMenuController的使用

總結自定義剪貼板的使用

其實自定義剪貼板也非常簡單,無非是放開響應時間,通過UIMenuController自定義剪貼板,然後就是最關鍵的實現你所用的copy方法拉。

爲了方便實用,我給cell添加了長按事件,看代碼---

UILongPressGestureRecognizer *recognizer = [[UILongPressGestureRecognizer allocinitWithTarget: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 allocinitWithTitle:@"Flag"action:@selector(flag:)];

            UIMenuItem *approve = [[UIMenuItem allocinitWithTitle:@"Approve"action:@selector(approve:)];

            UIMenuItem *deny = [[UIMenuItem allocinitWithTitle:@"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");


}

好,這就是基本的剪貼板的自定義使用了,爲了更直觀,上述三篇文章均由下面相似的效果圖一張



發佈了6 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章