如何检测 UITextView 上的点击?

How to detect taps on UITextView?

我的视图如下所示:

当用户尝试输入信息时,键盘覆盖了 UITextViews 我想尝试使用添加到 UITextViewUIGestureRecognizer 来检测 UITextView 上的点击=],然后根据点击的视图更改约束。 当我点击它时,应用程序崩溃了。

这是我用来检测点击 UITextViews -

的代码
//in viewDidLoad
let tap = UITapGestureRecognizer(target: self.textYoutube, action: "handleTap")
self.textYoutube.addGestureRecognizer(tap)    

func handleTap(tap: UITapGestureRecognizer) {
    if (tap.state == UIGestureRecognizerState.Ended) {
        println("[handleTap] Tap ended")
    }
}    

我的代码有问题吗?有没有更好的方法来移动 UITextViews?

使用通知,它们提供键盘框架,新键盘的尺寸可能会有所不同,框架将允许在其上方移动输入字段。

注册这些通知并处理将视图移出键盘:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardWillHideNotification object:nil];

从用户信息中获取键盘框架:

CGRect keyboarddRect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

释放dealloc中的通知

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];

交替使用委托方法:

textViewDidBeginEditing:
textViewDidEndEditing:

检测文本框上的点击;实现 textField 的委托方法 textFieldShouldBeginEditing: