1

我想使用 关闭带有文本字段的键盘 - (BOOL)textFieldShouldReturn:(UITextField *)textField {,但我需要对文本视图执行相同操作,所以我将使用- (BOOL)textViewShouldReturn:(UITextView *)textView {. 是否可以将它们放在同一个 AppDelegate 中?

谢谢你。

4

5 回答 5

1

是的,您可以有两个代表

@interface ViewController : UIViewController<UITextFieldDelegate,UITextViewDelegate>

很遗憾

协议 UITextViewDelegate没有,像这样。

- (BOOL)textViewShouldReturn:(UITextView *)textView {


UITextViewDelegate 协议在此处输入图像描述

编辑 1


按钮按下事件以隐藏键盘。

-(IBAction) yourButtonPressed:(id)sender;{

    for(UIView *v in self.view.subviews){
        if([v isKindOfClass:[UITextField class]] || [v isKindOfClass:[UITextView class]]){
            if([v isFirstResponder]){
                [v resignFirstResponder];
                break;
            }
        }
    }

}
于 2013-05-06T18:13:35.230 回答
0

只需从您的 viewController 订阅委托,并确保将这些对象上的委托设置为您的 viewController。

。H

@interface YourViewController : UIViewController <UITextFieldDelegate, UITextViewDelegate>

.m

someTextField.delegate = self;
someTextView.delegate = self;

从它的声音来看,您只需要绑定到 textField 和 textView 的操作。创建一个 IBAction 并将其绑定到您想要的内容。然后您可以从该 IBAction 中退出FirstResponder。

将此操作用于您的 textField 和 textView

- (IBAction)lowerTheText:(id)sender 
{
    [sender resignFirstResponder];
}
于 2013-05-06T18:02:35.067 回答
0

我不完全理解您的问题...基本上您将执行以下操作:

  • 在你的 viewController 中实现UITextFieldDelegateandUITextViewDelegate
  • 实现代表的方法,你需要/想要

  • resignFirstResponder / textField / textView 的 endEditing,无论你想要什么

于 2013-05-06T18:03:56.380 回答
0

是的,使用 UITextView 很棘手。正如我在书中所说...

http://www.aeth.com/iOSBook/ch23.html#_uitextview

...在 iPad 上,不会出现关闭键盘的问题,因为用户可以使用键盘右下角的按钮将其关闭。所以这只剩下iPhone。您通常会有一个界面,例如有一个完成按钮或类似的按钮。例如,看看 Notes 应用程序是如何解决这个问题的。

这个过程本身是一样的:调用endEditing:superview,无论谁是第一响应者,都将不再是第一响应者,键盘将退休。

于 2013-05-06T18:17:08.730 回答
0

是的,您可以在同一个应用程序中使用 textfield 委托和 textview 委托。

文本域:

@interface ViewController : UIViewController<UITextFieldDelegate,UITextViewDelegate>

// This allocates the textfield and sets its frame (or) you can use interfaceBuild
   UITextField *textField = [[UITextField  alloc] initWithFrame:
   CGRectMake(20, 50, 280, 30)]; 

  textField.delegate=self;

// This method enables or disables the processing of return key
-(BOOL) textFieldShouldReturn:(UITextField *)textField{    
    [textField resignFirstResponder]; // this is event for hide keyboard.
    return YES;
}

文本视图:

// init
 UITextView *textView = [[UITextView  alloc] initWithFrame:
       CGRectMake(20, 50, 280, 30)]; 

 - (void)textViewDidChangeSelection:(UITextView *)textView
{
 [textField resignFirstResponder]; // this is event for hide keyboard.
}
于 2013-05-06T18:35:01.467 回答