当我按下完成时,textview 键盘没有退出 iOS
textview keyboard not resigning when i press done iOS
我有一个文本视图,当我按下完成时,文本视图开始一个新行。
我已经实现了这些方法并添加了所有委托
@property (nonatomic, strong) IBOutlet UITextView *textField;
-(void)textViewDidEndEditing:(UITextView *)textView //was UITextField
{
[self.textField resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextView *)textField{
[textField resignFirstResponder];
return YES;
}
我在属性检查器中将键盘 return 键设置为完成。
我想让键盘上的done键退出first responder,好像不行
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
// error thrown here saying code will never execute
if(range.length + range.location > textField.text.length)
{
return NO;
}
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return newLength <= 300;
}
我如何添加这两个语句,以便它们可以正常工作?
转到您的故事板,然后select您的文本字段并设置委托并在您的 .h 文件中确认 UITextFieldDelegate 协议
希望对您有所帮助。
添加代表 UITextViewDelegate
@property (nonatomic, strong) IBOutlet UITextView *textField;
在viewDidLoad中写入这一行
textField.delegte = self;
// 在委托方法下方添加 [代码在 Swift 中。请找到obj-c方法并像我一样编写逻辑]
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
if (textField.text.length >= 300) {
return NO;
}
return YES;
}
我有一个文本视图,当我按下完成时,文本视图开始一个新行。
我已经实现了这些方法并添加了所有委托
@property (nonatomic, strong) IBOutlet UITextView *textField;
-(void)textViewDidEndEditing:(UITextView *)textView //was UITextField
{
[self.textField resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextView *)textField{
[textField resignFirstResponder];
return YES;
}
我在属性检查器中将键盘 return 键设置为完成。 我想让键盘上的done键退出first responder,好像不行
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
// error thrown here saying code will never execute
if(range.length + range.location > textField.text.length)
{
return NO;
}
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return newLength <= 300;
}
我如何添加这两个语句,以便它们可以正常工作?
转到您的故事板,然后select您的文本字段并设置委托并在您的 .h 文件中确认 UITextFieldDelegate 协议
希望对您有所帮助。
添加代表 UITextViewDelegate
@property (nonatomic, strong) IBOutlet UITextView *textField;
在viewDidLoad中写入这一行
textField.delegte = self;
// 在委托方法下方添加 [代码在 Swift 中。请找到obj-c方法并像我一样编写逻辑]
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
if (textField.text.length >= 300) {
return NO;
}
return YES;
}