iOS UIMenuController 的使用及不顯示的解決辦法

 

// 按鈕點擊事件 

- (void)testMenuClicke:(UIButton *)btn{undefined

     UIMenuController *menu = [UIMenuController sharedMenuController];

    [menu setTargetRect:btn.frame inView:btn.superview];

    //        [UIMenuController sharedMenuController].arrowDirection = UIMenuControllerArrowRight;

    UIMenuItem * item = [[UIMenuItem alloc] initWithTitle:@"複製" action:@selector(copys:)];

    UIMenuItem * item1 = [[UIMenuItem alloc] initWithTitle:@"粘貼" action:@selector(pastes:)];

    UIMenuItem * item2 = [[UIMenuItem alloc] initWithTitle:@"刪除" action:@selector(deletes:)];

    [menu setMenuItems:@[item, item1,item2]];

    [menu setMenuVisible:YES animated:YES];

    //[[UIMenuController sharedMenuController] update];

    //menu.arrowDirection = UIMenuControllerArrowLeft;

   }

//  需要設置以下兩個方法 

//  不設置這個方法,會導致無法調出menu菜單

- (BOOL)canBecomeFirstResponder {undefined

    return true;

}

// 再此方法中判斷允許的方法,否則菜單項不彈出

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {undefined

    //    UIResponder

    if(action == @selector(copys:)      ||

       action == @selector(pastes:)      ||

       action == @selector(deletes:)) {undefined

        return YES;

    }

    return NO;

}

// 實現方法,完成功能

- (void)copys:(id)sender {undefined

//    UIPasteboard * paste = [UIPasteboard generalPasteboard];

//    paste.string = self.text;

    

     NSLog(@"copy");

}

- (void)pastes:(id)sender {undefined

//    UIPasteboard * paste = [UIPasteboard generalPasteboard];

//    self.text = paste.string;

      NSLog(@"paste");

}

- (void)deletes:(id)sender {undefined

   // self.text = @"";

    NSLog(@"delete");

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章