ios - iOS点击UITextField时如何显示弹出菜单列表? (Kx菜单)

标签 ios objective-c iphone uibutton uitextfield

抱歉,我对 iOS 开发有点陌生,对于一个项目,我需要使用弹出列表菜单库(我知道 iOS 支持 PickerView ,...为了从列表菜单中进行选择)但我需要使用那个弹出列表,所以经过一番搜索后我找到了这个库: https://github.com/kolyvan/kxmenu

我已经看过该项目的示例。我将与 kxmenu 示例相同的示例添加到我的项目中并且它有效,但我需要稍作更改。而不是单击按钮(在示例中)打开弹出菜单,我希望每当用户在 UITextField 中单击时,都会打开弹出菜单。 此示例将按钮添加为 subview ,但我需要将一个操作连接到不是以编程方式编写的 UITextField(它不是通过添加 subview 添加的...)

如果有人告诉我我需要对以下代码应用哪些更改才能进行此更改,我将非常感谢(示例)代码:

  1. 不使用按钮,而是使用 UITextfield ,我的意思是当用户单击 UITextField 时,它将打开 kxmenu 弹出窗口

  2. 请考虑在 kxmenu 示例中,按钮是以编程方式添加的,但我拥有的 UITextField 是一个属性。

部分源码如下:

//#第 1 部分{

  _btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _btn1.frame = CGRectMake(5, 5, 100, 50);
    [_btn1 setTitle:@"click Me" forState:UIControlStateNormal];
    [_btn1 addTarget:self action:@selector(showMenu:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_btn1];

//#第 1 部分 }

- (void) pushMenuItem:(id)sender
{
    NSLog(@"%@", sender);
}

//#第 2 部分 {

- (void)showMenu:(UIButton *)sender

//#第 2 部分 } {

NSArray *menuItems =

    @[

      [KxMenuItem menuItem:@"ACTION MENU 1234456"
                     image:nil
                    target:nil
                    action:NULL],


      [KxMenuItem menuItem:@"Reload page"
                     image:[UIImage imageNamed:@"reload"]
                    target:self
                    action:@selector(pushMenuItem:)],

      [KxMenuItem menuItem:@"Search"
                     image:[UIImage imageNamed:@"search_icon"]
                    target:self
                    action:@selector(pushMenuItem:)],

      ];

    KxMenuItem *first = menuItems[0];
    first.foreColor = [UIColor colorWithRed:47/255.0f green:112/255.0f blue:225/255.0f alpha:1.0];
    first.alignment = NSTextAlignmentCenter;

    [KxMenu showMenuInView:self.view
                  fromRect:sender.frame
                 menuItems:menuItems];
}

凭借我对 iOS 的一点了解,我认为这些更改可能适用(但我已经尝试过,但它不适用于 UITextField

  1. 我需要将其替换为:而不是上面代码中显示的//#part 1 [currentTextField addTarget:self action:@selector(showMenu:) forControlEvents:UIControlEventTouchUpInside];
  2. 我需要将它改为 UITextField 作为发件人的参数,而不是 UIButton 作为发件人参数的声明//#part 2 shwon 在上面的代码中。

如果有人通过编写一些代码向我展示我需要对上述源代码进行哪些更改以达到以下目的,我将不胜感激。谢谢!

最佳答案

可以使用“UITextFieldDelegate”,例如:

- ( BOOL )textFieldShouldBeginEditing:( UITextField *)textField
  [self taggle];
)

-(void)taggle{
    NSArray *menuItems =
    @[
      [KxMenuItem menuItem:@"开启闪光灯"
                     image:nil
                    target:self
                    action:@selector(clickTorch)],
      [KxMenuItem menuItem:@"翻转"
                     image:nil
                    target:self
                    action:@selector(clickCamera)],
      [KxMenuItem menuItem:@"美颜"
                     image:nil
                    target:self
                    action:@selector(clickBeautyFace)],

      ];
    [KxMenu showMenuInView:self.view
                  fromRect:textField.frame // UITextField *textField = [[UITextField alloc] initWithFrame:....] // you can write any frame and change it.
                 menuItems:menuItems];
}

关于ios - iOS点击UITextField时如何显示弹出菜单列表? (Kx菜单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39620117/

相关文章:

iphone - future "Availability Date"的iPhone App当天会出现在 "New Releases"吗?

iphone - 从 URI 获取音频流并在 iPhone 上播放

ios - Xcode 在另一个 ViewController 中打开 WebView

objective-c - 在 Cocoa 中获取短 URL 的长 URL 的最简单方法?

ios - 动画 TextView 中的文本(swift3)

objective-c - 基于 View "Source List"NSOutlineView 字体平滑问题

IOS 9 不请求远程通知权限

iphone - NSData 字节浮点 - iPhone SDK

ios - 将被弃用的 UIView 自动布局方法的替代方法

ios - 第一次点击 UITextField.inputView = UIPickerView 时显示键盘