ios - 当我按下完成 iOS 时,textview 键盘没有退出

标签 ios objective-c uitextview uikeyboard resignfirstresponder

我有一个 TextView ,当我按下完成时, TextView 开始一个新行。

我已经实现了这些方法并添加了所有委托(delegate)

@property (nonatomic, strong) IBOutlet UITextView *textField;

-(void)textViewDidEndEditing:(UITextView *)textView //was UITextField
{
    [self.textField resignFirstResponder];
}

- (BOOL)textFieldShouldReturn:(UITextView *)textField{

    [textField resignFirstResponder];
    return YES;

}

我在属性检查器中将键盘返回键设置为完成。 我想让键盘上的完成键退出第一响应者,它似乎不起作用。

- (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;
}

我如何添加这两个语句,以便它们可以正常工作?

最佳答案

添加委托(delegate) UITextViewDelegate

@property (nonatomic, strong) IBOutlet UITextView *textField;

在viewDidLoad中写下这一行

textField.delegte = self;

//在委托(delegate)方法下方添加 [代码在 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;
}

关于ios - 当我按下完成 iOS 时,textview 键盘没有退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788269/

相关文章:

ios - UITableView 禁用某些行的 rowEditActionForRowAtIndexPath

ios - 将现有对象模型转换为 Core Data 托管对象模型

ios - 将 UIButton 的触摸限制在指定区域

ios - 在 UITextView 中制作项目符号/编号/检查列表

ios - iPhone SE 和 4s 的 Xcode 安全区域故障

ios - 在我的应用程序中多次使用相同的代码

ios - 在编辑模式下将自定义单元格在 UITableView 中向右移动

ios - 为什么这个循环不退出

ios - 第一个 UITextview 文本未显示

iphone - 如何将表情符号和文本一起保存到 sqlite 数据库中