2011-06-11 54 views
0

我想弄清楚如何做一些或许稍微不标准的事情。我有一个视图控制器(UIViewController),它有1个UITextField和3个UIButton。我基本上使用UIButtons作为切换;一次只能选择1个。所以,每个人都有:当UITextField是第一响应者时,UIButton仍然可选择吗?

[myButton1 addTarget:self action:@selector(buttonPushed:) 
    forControlEvents:UIControlEventTouchUpInside]; 

,我这样做是为了在按钮之间进行切换:

- (void) buttonPushed:(id)sender 
{ 
    myButton1.selected = NO; 
    myButton2.selected = NO; 
    myButton3.selected = NO; 
    if (sender == myButton1) { 
     myButton1.selected = YES; 
    } 
    else if (sender == myButton2) { 
     myButton2.selected = YES; 
    } 
    else if (sender == myButton3) { 
     myButton3.selected = YES; 
    } 
} 

现在的事情是,我还是想的按钮可以进行选择,即使文本字段键盘向上(当显示键盘时,按钮和文本字段都可见)。但由于文本字段具有第一响应者,因此按钮触摸不被识别(永远不会到达目标按钮压下的方法)。我不希望用户不得不关闭键盘来选择一个按钮。 我该怎么做?谢谢!

回答

0

我认为你应该使用像

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
or 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

触摸方法我喜欢ü用touchEnded方法。在这里你检查用户是否在uibutton上点击,然后做你想做的事

+0

谢谢你。虽然这些触摸方法似乎不适用于UIButton。我想我可以继承UIButton并从那里去拦截触摸方法。不知道这是否是解决方案,但我会从那里开始。 – aSadhankar 2011-06-11 07:46:50

+0

你应该检查斯蒂芬费舍尔的答案。他是对的 – 2011-06-11 09:33:28

1

我从来没有遇到过使用键盘从按钮获取事件的问题。你确定你没有接触到那个处理程序吗?

任何机会myButton1等没有连接?

+0

我没有使用接口构建器。我简单地将按钮添加到视图后,我设置其属性。 当键盘没有弹起时,可以使用buttonPushed方法,但当键盘弹起时,它根本没有触及它。 – aSadhankar 2011-06-11 19:55:13

+0

我是否正确地将按钮添加到视图?还是我必须做别的事情?如果我添加“touchesEnded”方法,当点击除UIButton之外的任何其他屏幕时,点击该方法。当键盘弹起时,如果我点击任何地方,它不会触及touchesEnded方法。 – aSadhankar 2011-06-11 20:08:52

3

我想通了。这里的2个答案是正确的;问题是我在这个视图上使用了UITapGestureRecognizer。出于某种原因,阻止任何触摸事件达到预定的水龙头以外,我想。卫生署。

我删除了手势识别器,现在当显示键盘时点击了触摸事件。

+0

啊,很好找。感谢分享它。 – 2011-06-11 21:09:37

相关问题