我一直试图弄清楚如何让UIKeyboard上的下一个按钮加载下一个UITextField.我有两个单元格,名称和电子邮件我想使用下一步按钮从名称转到电子邮件.
到目前为止我已经补充说
//.h
<UITextFieldDelegate>
Run Code Online (Sandbox Code Playgroud)
然后我这样做是为了尝试将用户从Name传递给Email
//.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
customerNameTextField.delegate = self;
customerEmailTextField.delegate = self;
//...
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (![customerNameTextField.text isEqualToString:@""]) {
[customerNameTextField resignFirstResponder];
[customerEmailTextField becomeFirstResponder];
} else if (textField == customerEmailTextField) {
// here you can define what happens
// when user presses return on the email field
// send request
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
它输入第一个if语句,然后它使用resignFirstResponder从屏幕上删除键盘但是它不使用becomeFirstResponder加载新键盘..任何帮助解决这个问题都会非常适用.
我有一个行为正常的UISearchBar - 如果我点击"搜索"或"取消",键盘会消失.
但是,当我在导航堆栈上按下新的视图控制器时,如果键盘打开,它将不会关闭.它保留在旧视图控制器中,如果我导航回它,键盘仍然显示.
我很难过,因为我的searchBarShouldEndEditing方法是按预期调用的,我做[activeSearchBar resignFirstResponder].这适用于"搜索"或"取消",但不适用于视图消失时触发的情况.
我的代表代码:
#pragma mark Search bar delegate methods__________________________
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)activeSearchBar
{
NSLog(@"searchBarShouldBeginEditing");
[activeSearchBar setShowsCancelButton:TRUE animated:YES];
if (!showSearchType)
return TRUE;
if([UIView respondsToSelector:@selector(animateWithDuration:animations:)]) {
// iOS 4.0 and later
[UIView animateWithDuration:0.3 animations:^ {
searchTypeView.frame = CGRectMake(0, 44, 320, 69);
searchTypeView.bounds = CGRectMake(0, 0, 320, 69);
grayBg.alpha = 0.6;
}];
} else {
// Before iOS 4.0
searchTypeView.frame = CGRectMake(0, 44, 320, 69);
searchTypeView.bounds = CGRectMake(0, 0, 320, 69);
grayBg.alpha = 0.6;
}
self.frame = CGRectMake(0, 0, …Run Code Online (Sandbox Code Playgroud) 我正在使用UITextView并希望保持Return键的正常使用,即插入新行.但是当我不能使用Return键时,如何解除键盘?
这行代码在我的电子邮件文本字段编辑DidEnd 时运行。NSLog 运行,所以我知道该函数已运行,但键盘仍然没有消失。我已将文本框连接为委托。我已经确保故事板中的连接存在。依然不会改变。帮助。谢谢。
- (IBAction)emailDone2:(id)sender
{
[_email resignFirstResponder];
NSLog(@"emailDone2");
}
Run Code Online (Sandbox Code Playgroud)
编辑* *我按照指示更改了代码,但这仍然没有任何作用。什么也没有变。
- (IBAction)emailDone2:(id)sender
{
[self.view endEditing:TRUE];
}
Run Code Online (Sandbox Code Playgroud) 如果我将resign代码放在我的if条件下键盘不会退出,如果我评论if条件我的键盘辞职.
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (searchText.length == 0) {
[searchBar resignFirstResponder];
}
}
Run Code Online (Sandbox Code Playgroud)
我想在用户按下"x"按钮时退出键盘,这时UISearchBar文本为空.有没有办法做到这一点?
如何从uiviewcontroller对象resignFirstResponder处于活动状态.
我有五个文本域一,二,三,四,五.
- (void)removeKeyBoard{
[one resignFirstResponder];
[two resignFirstResponder];
[three resignFirstResponder];
[four resignFirstResponder];
[five resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
上面的代码完成了我的工作,但每个对象引用都指定了resignFirstResponder.
有没有办法,处理resignFirstResponser哪个字段是活动的,UIViewController自动重新签名该对象.
@All先谢谢.
当选择textField时,我想显示一个弹出窗口,而不是显示键盘(我的代码位于底部).如果键盘没有显示,那么一切都很好.但是,如果键盘显示然后选择了文本字段,键盘就不会被解雇,某个地方的第一个响应者必须迷路但我不知道在哪里.有人有解决方案吗?
我的文字字段:
self.startDateTextField = [[UITextField alloc] initWithFrame:CGRectMake(79, 148, 138, 27)];
[self.startDateTextField setBorderStyle:UITextBorderStyleRoundedRect];
[self.startDateTextField setDelegate:delegate];
[self.startDateTextField addTarget:delegate action:@selector(editStartDate:) forControlEvents:UIControlEventEditingDidBegin];
[popoverWrapper addSubview:self.startDateTextField];
Run Code Online (Sandbox Code Playgroud)
在editStartDate:我有:
-(void)editStartDate:(UITextField *)textField {
[textField resignFirstResponder];
DatePickerVC *datePickerVC = [[DatePickerVC alloc] init];
datePickerVC.delegate = self;
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:datePickerVC];
[self.popoverController setDelegate:self];
[self.popoverController presentPopoverFromRect:CGRectMake(0, 0, 5, 5) inView:textField permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
}
Run Code Online (Sandbox Code Playgroud) 我试过这个:
在.h档案中:
@interface TouchLabelViewController : UIViewController<UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *aTextField;
-(IBAction)hideKeyboard:(id)sender;
Run Code Online (Sandbox Code Playgroud)
在.m文件中:
-(IBAction)hideKeyboard:(id)sender{
[(UITextField*)sender resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
并试过这个.
在.h档案中:
- (void)viewDidLoad
{
[super viewDidLoad];
aTextField.delegate = self;
}
@property (strong, nonatomic) IBOutlet UITextField *aTextField;
-(BOOL) textFieldShouldReturn:(UITextField *)textField;
Run Code Online (Sandbox Code Playgroud)
在.m档案中:
-(BOOL) textFieldShouldReturn:(UITextField *)textField{
[aTextField resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我触摸返回键时,它都不会隐藏键盘.
(IBAction)textFieldDoneEditing:(id)sender{//Expected identifer or ')'
[sender resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
怎么了?这是"开始iOS 6开发"的一个例子
我的VC中有两个textFields和一个Done按钮但是我在编辑结束时遇到了一些问题.
textFieldDidEndEditing当我在另一个textField内部之后点击一个,或者当我在textField外面点击时(因为我在父视图中添加了一个点击识别器)但是当我点击Done按钮时,我的方法被调用.
而且,最重要的(特别是当我在实际设备上运行时),即使我的textFieldDidEndEditing方法调用,键盘也不会在任何这些情况下消失resignFirstResponder().
为什么键盘没有解雇?另外,textFieldDidEndEditing当我在场外自动点击(没有来自点击识别器)时,是否有一种方法可以被调用?看起来这应该是它的工作方式,但如果我错了,我错了.
这是我的代码的一些相关部分.
1.想要解雇键盘.此方法的第一部分有效,并且存储了值(当完全调用该方法时).光标在任何时候都不会从textField中消失,键盘也不会被解除.
func textFieldDidEndEditing(_ textField: UITextField) {
if let playerName = textField.text, let playerNum = nameFields.index(of: textField) {
playerNames[playerNum] = playerName
}
resignFirstResponder()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textFieldDidEndEditing(textField)
return true
}
Run Code Online (Sandbox Code Playgroud)
此外,这是一个奇怪的事情:当我设置一个断点textFieldDidEndEditing和调试时,在一个字段中输入一个值并点击Done,它将转移到下一个场景,然后停在textFieldDidEndEditing,此时无效(值可能存储但它们没有反映在新场景中).
2.尝试将点击识别器添加到完成按钮.我的代码中没有完成按钮的出口,只是出于懒惰,所以这可能是最好的解决方案.但是,我仍然对为什么这不起作用感兴趣.这与定义在父视图中工作的点击识别器的代码相同.
func dismiss(_ sender:UITapGestureRecognizer) {
nameFields.forEach { textFieldDidEndEditing($0) }
}
override func viewDidAppear(_ animated: Bool) {
for …Run Code Online (Sandbox Code Playgroud) ios ×5
iphone ×4
objective-c ×2
uikeyboard ×2
uisearchbar ×2
uitextfield ×2
ios7 ×1
ios8 ×1
sender ×1
swift ×1
textview ×1