gpt4 book ai didi

iphone - 在 Xcode 4.3 中将 UIToolbar 放置在键盘上

转载 作者:行者123 更新时间:2023-12-03 19:39:01 27 4
gpt4 key购买 nike

这是我的第一篇文章,我对 iOS 编程还很陌生。我正在使用 xcode 4.3,并且有一个可能是一个简单的问题。我已经寻找了一种将工具栏放置在键盘上方的方法,上面有上一个/下一个按钮。我发现了一些关于当 xcode 使用界面生成器时如何执行此操作的教程。但我找不到适用于最新版本 xcode 的版本。因此,我借鉴了在互联网和苹果开发网站上找到的内容,并编写了一些代码。唯一的是,它不起作用!我收到一条错误消息,指出在 inputAcessoryView 行上分配给只读属性。我知道这可能很简单,但是当将代码从以前的版本转移到新版本时,我很可能搞砸了一些事情。有人可以检查我的代码并让我知道我做错了什么。非常感谢。我已包含我的 .h/.m 文件

    #import <UIKit/UIKit.h>

@interface keyboardViewController : UIViewController


@property (retain, nonatomic) IBOutlet UIView *textField1;
@property (retain, nonatomic) IBOutlet UIView *textField2;

@property (nonatomic, retain) UIToolbar *keyboardToolbar;

-(void)resignKeyboard:(id)sender;
-(void)previousField:(id)sender;
-(void)nextField:(id)sender;

@end

实现

    #import "keyboardViewController.h"

@interface keyboardViewController ()

@end

@implementation keyboardViewController
@synthesize textField1;
@synthesize textField2;
@synthesize keyboardToolbar;

- (void)viewDidLoad
{
[super viewDidLoad];

if (keyboardToolbar == nil)
{
keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];

UIBarButtonItem *previousButton = [[UIBarButtonItem alloc] initWithTitle:@"previous"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(previousField:)];
UIBarButtonItem *nextButton = [[UIBarButtonItem alloc] initWithTitle:@"next"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(nextField:)];

UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemFlexibleSpace) target:nil action:nil];


UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemDone) target:self action:@selector(resignKeyboard:)];



[keyboardToolbar setItems:[[NSArray alloc] initWithObjects:previousButton, nextButton, extraSpace, done, nil]];

textField1.inputAccessoryView = keyboardToolbar;
textField2.inputAccessoryView = keyboardToolbar;


}


}

-(void) resignKeyboard:(id)sender
{
if ([textField1 isFirstResponder])
[textField1 resignFirstResponder];

else if ([textField2 isFirstResponder])
[textField2 resignFirstResponder];
}

-(void) previousField:(id)sender
{
if ([textField1 isFirstResponder])
[textField2 becomeFirstResponder];

else if ([textField2 isFirstResponder])
[textField1 becomeFirstResponder];
}


-(void) nextField:(id)sender
{
if ([textField1 isFirstResponder])
[textField2 becomeFirstResponder];

else if ([textField2 isFirstResponder])
[textField1 becomeFirstResponder];
}


- (void)viewDidUnload
{
[self setTextField1:nil];
[self setTextField2:nil];
[self setKeyboardToolbar:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

最佳答案

@interface keyboardViewController : UIViewController<UITextFieldDelegate>


@property (retain, nonatomic) IBOutlet UITextField *textField1;
@property (retain, nonatomic) IBOutlet UITextField *textField2;

并在 .m 位置代替此代码

        textField1.inputAccessoryView  = keyboardToolbar;
textField2.inputAccessoryView = keyboardToolbar;

粘贴这些代码

for (id view in self.view.subviews) {
if ([view isKindOfClass:[UITextField class]]) {
[(UITextField *)view setInputAccessoryView:keyboardToolbar];
}
}

粘贴此代码

-(void) resignKeyboard:(id)sender{

[self.view endEditing:YES];
}

而不是这个

-(void) resignKeyboard:(id)sender
{
if ([textField1 isFirstResponder])
[textField1 resignFirstResponder];

else if ([textField2 isFirstResponder])
[textField2 resignFirstResponder];
}

在viewDidLoad方法中添加此代码

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

-(void)nextField:(id)sender{

if ([textField1 isFirstResponder]) {

[textField2 becomeFirstResponder];
[previousButton setEnabled:YES];
[nextButton setEnabled:NO];
}
}

-(void)previousField:(id)sender{

if ([textField2 isFirstResponder]) {

[textField1 becomeFirstResponder];
[nextButton setEnabled:YES];
[previousButton setEnabled:NO];
}
}

-(void)keyboardWillShow:(id)sender{

if ([textField2 isFirstResponder]) {

[nextButton setEnabled:NO];
[previousButton setEnabled:YES];
}else if ([textField1 isFirstResponder]) {

[nextButton setEnabled:YES];
[previousButton setEnabled:NO];
}
}

关于iphone - 在 Xcode 4.3 中将 UIToolbar 放置在键盘上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10333018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com