使用IQKeyboardManager解决下一个/上一个按钮的问题

时间:2015-03-11 17:44:00

标签: ios swift iqkeyboardmanager

我在Swift项目中工作,我有几个输入字段。我为每个输入字段创建了一个自定义视图,因为我们在项目中使用了很多。

我在项目中添加了IQKeyboardManager。它工作得很好,视图根据活动文本字段起作用。

但是,不显示“下一个/上一个”按钮。我尝试在代码中设置文本字段的标记,如下所示:

slNameField.setTextField("Name", keyboardType: UIKeyboardType.NamePhonePad, image: UIImage(named: "ic_name"))
slNameField.txtField.tag = 101

slEmailField.setTextField("Email", keyboardType: UIKeyboardType.EmailAddress, image: UIImage(named: "ic_email"))
slEmailField.txtField.tag = 102

slLocationField.setTextField("City, Country", keyboardType: nil, image: UIImage(named: "ic_location"))
slLocationField.txtField.tag = 103

以下是该项目的一些插图:

The Signup Screen

5 个答案:

答案 0 :(得分:18)

我也遇到了同样的问题。正如@sam所提到的,该库有一个非常有用的演示项目。

<强>解决方案 您只需选择所有textField或UIView所在的UIView。然后你只需将它的类更改为

  

<强> “IQPreviousNextView”

其余所有内容都将由图书馆处理。

问题屏幕图片

enter image description here

解决方案是屏幕短

enter image description here

希望它有帮助:)。它救了我的一天。

答案 1 :(得分:6)

@Ibrahim Yildirim,如果下一个和上一个按钮没有出现在工具栏上,这是因为文本字段不能在同一个uiview中。只有当所有文本字段都在同一个超级视图中时才会出现。

答案 2 :(得分:2)

请通过以下函数在您的应用程序委托文件(AppDelegate.swift)中添加代码行:didFinishLaunchingWithOptions。 代码行:IQKeyboardManager.shared.previousNextDisplayMode = .alwaysShow

答案 3 :(得分:1)

转到IQUIView + IQKeyboardToolbar.m文件并执行以下更改

只需更改以下方法

即可
- (void)addPreviousNextDoneOnKeyboardWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction doneAction:(SEL)doneAction titleText:(NSString*)titleText
- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonImage:(UIImage*)rightButtonImage previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction titleText:(NSString*)titleText
- (void)addPreviousNextRightOnKeyboardWithTarget:(id)target rightButtonTitle:(NSString*)rightButtonTitle previousAction:(SEL)previousAction nextAction:(SEL)nextAction rightButtonAction:(SEL)rightButtonAction titleText:(NSString*)titleText

在上面列出的方法

中找到下一个按钮代码

//下一步按钮

IQBarButtonItem *next = [[IQBarButtonItem alloc]initWithImage:imageRightArrow style:UIBarButtonItemStylePlain target:target action:nextAction];

//替换为此代码

 IQBarButtonItem *next = [[IQBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStylePlain target:target action:nextAction];

在上面列出的方法

中找到上一个按钮代码

//上一个按钮

IQBarButtonItem *prev = [[IQBarButtonItem alloc] initWithImage:imageLeftArrow style:UIBarButtonItemStylePlain target:target action:previousAction];

//替换为此代码

 IQBarButtonItem *prev = [[IQBarButtonItem alloc] initWithTitle:@"Previous" style:UIBarButtonItemStylePlain target:target action:previousAction];

答案 4 :(得分:0)

我认为您应该将整个层次结构放在IQPreviousNextView内。

从情节提要中将IQPreviousNextView类分配给UIView(父视图)。它将开始工作。

enter image description here

enter image description here