相关疑难解决方法(0)

在UILabel上显示iPhone剪切复制粘贴菜单

  1. 我们可以启用一个剪切复制粘贴菜单UILabel,因为它是一个UITextField

  2. 如果没有,我需要转换UILabelUITextField,我如何启用剪切复制粘贴菜单,不允许修改内容?

iphone cocoa-touch ios swift

45
推荐指数
7
解决办法
3万
查看次数

将语音添加到自定义UIMenuController

我在a UIMenuController中创建了一个自定义UIWebView但它似乎摆脱了之后的"Speak Selection"选项UIMenuController.说话选择选项在所有测试设备的"首选项"中打开,并显示在其他应用程序中,包括非Apple应用程序.是否有可访问性服务或sharedMenuController我可以调用以获取此项目的一部分?

UIMenuItem *copyMenuItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Copy", @"Copy menu item") action:@selector(myappCopy:)];

UIMenuItem *highlightMenuItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Highlight", @"Highlight menu option") action:@selector(myappHighlight:)];

UIMenuItem *unhighlightMenuItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Remove Highlight", @"Remove Highlight menu option")
                                                           action:@selector(myappRemoveHighlight:)];

UIMenuItem *noteMenuItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Note", @"Note menu options") action:@selector(myappNote:)];

[UIMenuController sharedMenuController].menuItems = [NSArray arrayWithObjects:copyMenuItem, highlightMenuItem, unhighlightMenuItem, noteMenuItem, nil];

[copyMenuItem release];
[highlightMenuItem release];
[unhighlightMenuItem release];
[noteMenuItem release];
Run Code Online (Sandbox Code Playgroud)

我甚至尝试在开始时解析现有的共享菜单项,但我没有看到任何转储在日志中.该方法将在应用启动时调用.

在方法的顶部尝试了这个:

    for (UIMenuItem *menuItem in [UIMenuController sharedMenuController].menuItems) {
        NSLog(@"title: %@", …
Run Code Online (Sandbox Code Playgroud)

iphone ios

8
推荐指数
2
解决办法
1944
查看次数

UITableViewController中的复制/粘贴功能

我有一个UITableViewController.我想在用户触摸单元格时弹出复制/粘贴菜单.我想在"联系人"应用中执行此操作.如何实现此功能.有人能帮我吗.

我试过这段代码,

UIMenuController *theMenu = [UIMenuController sharedMenuController];
[theMenu setTargetRect:CGRectMake(10, 200, 100, 40) inView:[self tableView]];
[theMenu setMenuVisible:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我的问题是,

  1. 我必须传递什么CGRect作为setTargetRect参数?
  2. 我需要在TableViewController中调用SetNeedsDisplayInRect吗?
  3. 还有什么可以做到这一点?

iphone

5
推荐指数
1
解决办法
3479
查看次数

UIMenuController未显示

我在长按和双击手势上显示UIMenuController,但它没有显示.我按照这里给出的答案,但仍然没有出现.UIMenuController没有显示出来

以下是我的代码

- (void) doubleTap:(UITapGestureRecognizer *)gesture
{
    [self becomeFirstResponder]; 

    CGPoint location = [gesture locationInView:[gesture view]];
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    UIMenuItem *resetMenuItem = [[UIMenuItem alloc] initWithTitle:@"DoubleTap" action:@selector(hideKeyboard)];

    [menuController setMenuItems:[NSArray arrayWithObject:resetMenuItem]];
    [menuController setTargetRect:CGRectMake(location.x, location.y, 0.0f, 0.0f) inView:[gesture view]];
    [menuController setMenuVisible:YES animated:YES];
}

- (void) longPress:(UITapGestureRecognizer *)gesture
{
    [self becomeFirstResponder]; 

    CGPoint location = [gesture locationInView:[gesture view]];
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    UIMenuItem *resetMenuItem = [[UIMenuItem alloc] initWithTitle:@"LongPress" action:@selector(hideKeyboard)];

    [menuController setMenuItems:[NSArray arrayWithObject:resetMenuItem]];
    [menuController setTargetRect:CGRectMake(location.x, location.y, 0.0f, 0.0f) inView:[gesture view]];
    [menuController setMenuVisible:YES animated:YES]; …
Run Code Online (Sandbox Code Playgroud)

iphone uimenucontroller uimenuitem

4
推荐指数
1
解决办法
2284
查看次数

更改视图控制器后,UIMenuController不显示

我有2个viewControllers,在第一个我使用tapRecognizer按住,以显示UImenucontroller复制字符串.点击用于在导航栏上选择标题,它显示一个带有复制项目的UI菜单控制器.

一次工作,但是当用户切换到另一个视图控制器并再次返回第一个视图控制器时,菜单不再显示.

-(void)viewDidLoad{
    [super viewDidLoad];
    UIView *viewWithTitleLabel = self.navigationController.navigationBar.subviews[1];
    viewWithTitleLabel.userInteractionEnabled = YES;

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(topBarTitleTap:)];
    [viewWithTitleLabel addGestureRecognizer:longPress];
}

-(void)topBarTitleTap:(UILongPressGestureRecognizer *)gestureRecognizer
{
    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
        UIMenuController *menuController = [UIMenuController sharedMenuController];
        [menuController setTargetRect:CGRectMake(CGRectGetMidX([self.view bounds]), -12.0, 0.0f, 0.0f) inView:self.view];
        [menuController setMenuVisible:YES animated:YES];
    }
}

- (void) copy:(id) sender {
    // called when copy clicked in tab bar title
    NSString *copyStringverse = self.navigationItem.title;
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    [pasteboard setString:copyStringverse];
}

- (BOOL) canBecomeFirstResponder { …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c uiviewcontroller uimenucontroller ios

1
推荐指数
1
解决办法
1824
查看次数