19 iphone
我有一个UIButton子视图UITableViewCell.
触摸此按钮时,用户必须按住按钮约半秒钟才能将按钮的图像更改为UIControlStateHighlighted图像.
这意味着如果用户只是按照通常的情况点击按钮,则不会显示突出显示的状态.
为什么会发生这种情况,我该如何解决?
Dav*_*dge 25
我刚刚遇到这个问题,发现此问题尚未解决.拧了一会儿后,我找到了解决方法.
现在,您可以通过关闭延迟内容套餐或取消选中桌面视图上的"延迟内容触摸"框来解决此问题.
唯一的负面影响是用户将无法点击按钮并启动滚动手势.但是,如果用户尝试从本身不接受触摸的任何地方开始滚动,则行为应与以前相同.
Don*_*nit 11
大卫霍奇的回答.
我只是想添加一种方法来消除David已经描述过的"唯一的负面影响":如果你开始在带有delayContentTouches = NO的UIScrollView中的UIcontrol内滚动,则滚动不起作用.
解决方案 子类UIScrollView(或UITableView作为原始问题)并覆盖:
-(BOOL) touchesShouldCancelInContentView:(UIView *)view {
return YES;
}
Run Code Online (Sandbox Code Playgroud)
您在UIScrollView/UITableView中的UIControl将立即更改其状态,即使在某些UIControl上启动触摸,滚动视图也可以滚动.奇迹般有效.
luc*_*ius 10
问题是您的UIButton位于UITableView中.这意味着表格视图必须确定您的点按是否将是滑动,或者它是否只是用于按钮的点击.表视图必须延迟向UIButton发送消息,直到它知道用户不打算滑动,因此滚动视图而不是按下按钮.
如果您不需要表视图,请删除UITableView.
编辑:在对问题的误解之后完全重写
UIButton 的一种思考方式是作为一种设置屏幕区域的简写方式,该区域可以响应各种瞬时触摸事件,它所做的响应由 UIControl 的 Target-Action 系统定义,用于向其他对象传递消息。
UIControlEventTouchDown听起来像是你需要回应的人。一旦有人触摸您的按钮内部,它就会被触发 - 这就是短信中的“联系信息”按钮的作用。
UIButton * myButton = [[UIButton 按钮WithType:UIButtonTypeRoundedRect]; // 设置标题、框架等 [myButton addTarget:self action:@selector(myButtonWasPressed) forControlEvents: UIControlEventTouchDown]; [myMainView addSubView:myButton];
-(void)myButtonWasPressed将向运行此代码的对象发送一条消息(理想情况下是您查看控制器)。然后myButtonWasPressed您可以添加新视图或执行任何您喜欢的操作。SMS 应用程序推送视图控制器以使用导航控制器显示联系信息。
如果这仍然不能解决您的问题,您将不得不发布一些代码以便更深入地了解出了什么问题。
| 归档时间: |
|
| 查看次数: |
6634 次 |
| 最近记录: |