UITextField With CustomMenu

234 阅读1分钟

UITextField 自带UIMenuController

自定义UITextField, 在.m文件中写如下代码:

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    menuController.menuItems = @[
                                 [[UIMenuItem alloc] initWithTitle:@"顶" action:@selector(ding:)],
                                 [[UIMenuItem alloc] initWithTitle:@"回复" action:@selector(reply:)],
                                 [[UIMenuItem alloc] initWithTitle:@"举报" action:@selector(warn:)]
                                 ];
    if ((action == @selector(copy:) && self.text.length != 0)
        || (action == @selector(cut:) && self.text.length != 0)
        || (action == @selector(select:) && self.text.length != 0)
        || action == @selector(paste:)
        || action == @selector(ding:)
        || action == @selector(reply:)
        || action == @selector(warn:)) return YES;
    return NO;
}

#pragma mark - 监听MenuItem的点击事件
//剪切
- (void)cut:(UIMenuController *)menu {
    [UIPasteboard generalPasteboard].string = self.text;
    self.text = nil;
    NSLog(@" ----- %s", __func__);
    [self resignFirstResponder];
}
//赋值
- (void)copy:(UIMenuController *)menu {
    [UIPasteboard generalPasteboard].string = self.text;
    NSLog(@" ----- %s", __func__);
    [self resignFirstResponder];
}
//粘贴
- (void)paste:(UIMenuController *)menu {
    self.text = [UIPasteboard generalPasteboard].string;
    NSLog(@" ----- %s", __func__);
    [self resignFirstResponder];
}
//顶
- (void)ding:(UIMenuController *)menu {
    NSLog(@" ----- %s", __func__);
    [self resignFirstResponder];
}
//警告
- (void)reply:(UIMenuController *)menu {
    NSLog(@" ----- %s", __func__);
    [self resignFirstResponder];
}

- (void)warn:(UIMenuController *)menu {
    NSLog(@" ----- %s", __func__);
    [self resignFirstResponder];
}