我有一个UIButton,当被选中时,触摸时不应改变状态.默认行为是它在触摸时处于UIControlStateHighlighted,这让我很生气.
建议?
我不想要UIButton或类似的东西.我想UIControl直接子类化并制作我自己的非常特殊的控件.
但由于某种原因,我所覆盖的任何方法都没有被调用过.目标动作的东西起作用,目标接收适当的动作消息.但是,在我的UIControl子类中,我必须捕获触摸坐标,这样做的唯一方法似乎是覆盖这些人:
- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"begin touch track");
return YES;
}
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"continue touch track");
return YES;
}
Run Code Online (Sandbox Code Playgroud)
它们永远不会被调用,即使它UIControl是使用指定的初始化程序实例化的UIView,initWithFrame:.
我可以找到的所有示例总是使用UIButton或UISlider作为子类的基础,但我想更接近,UIControl因为这是我想要的源:快速和未延迟的触摸坐标.
有没有办法为a设置自定义状态 - 不是现有UIControlState值之一UIControl?
在UIControlSate枚举中,有16位可用于自定义控件状态:
UIControlStateApplication = 0x00FF0000, // additional flags available for application use
Run Code Online (Sandbox Code Playgroud)
问题是,UIControl的state属性是只读的.
我想为我UIButton的自定义状态设置不同的背景图像.
我有一个自定义的UIControl类,我想在我的故事板中使用.我遇到问题,因为Storyboard控制台中的对象库中没有UIControl.
我尝试添加一个UIView并为其分配我的自定义UIControl类,但它似乎没有注册我需要控件使用的事件(Value Changed,Touch Drag Inside,Touch Up Inside).
在调试时,我打破了与事件相关的操作,看起来甚至没有调用它们.
如何在故事板中正确使用我的自定义UIControl类?
我有一个UIControl实现了触摸开始方法,如下所示:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//More code goes here
Run Code Online (Sandbox Code Playgroud)
UIControl的这个子类在视图控制器中实例化,然后作为子视图添加到该视图控制器.我在UIControl的touches begin方法中有一个断点,并且该方法永远不会被调用.我一直在做一些阅读,看起来View Controller有一些逻辑决定是否将触摸事件传递给它的子视图.奇怪的是,我在同一个视图控制器中有一个不同的UIControl子类,触摸事件在用户触摸时传递给它!这是完整的代码:
.H
#import <UIKit/UIKit.h>
@interface CustomSegment : UIView
@property (nonatomic, strong) UIImageView *bgImageView;
@property (nonatomic, assign) NSInteger segments;
@property (nonatomic, strong) NSArray *touchDownImages;
@property (nonatomic, readonly, assign) NSInteger selectedIndex;
@property (nonatomic, weak) id delegate;
- (id)initWithPoint:(CGPoint)point numberOfSegments:(NSInteger)_segments andTouchDownImages:(NSArray *)_touchDownImages;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end
Run Code Online (Sandbox Code Playgroud)
.M
#import "CustomSegment.h"
@implementation CustomSegment
@synthesize bgImageView, segments, touchDownImages, selectedIndex, delegate;
- (id)initWithPoint:(CGPoint)point
numberOfSegments:(NSInteger)_segments
andTouchDownImages:(NSArray *)_touchDownImages
{
self = …Run Code Online (Sandbox Code Playgroud) 我有一个UIButton从xib文件加载作为IBOutlet视图控制器的属性.我将一个选择器附加到viewDidLoad我的视图控制器中的按钮:
[_myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
在iOS 6中一切正常,但是当我在iOS 5.0中的模拟器上运行时,选择器不会被调用.触摸时按钮会突出显示.
另一件需要注意的事情是按钮UIView位于UITapGestureRecognizer添加了它的按钮中.在UITapGestureRecognizer这种观点被调用的的iOS 5.0当按钮被窃听,(它不会被调用在iOS 6中,其中按钮的选择被称为替代).
我没有运行iOS 5的设备,所以我没有在设备上测试过,只是模拟器.
有谁知道这里发生了什么,以及如何解决它?
基本上我需要一个图像按钮,特别是一个自定义对象:
1)在点击时调用控制器的动作
2)封装自定义数据
3)由包装器视图自动移动(不相关)
好吧,我用一个子类得到了所有这些UIControl(因为UIButton不建议使用子类化UIImageView,并且子类化很难管理第1点).但现在突出它的正确方法是什么?我想以任何方式点击控件(即使是简单的alpha瞬间减少).
随着beginTrackingWithTouch和endTrackingWithTouch我无法识别唯一的UIControlEventTouchUpInside事件.
控制器中的视图动画?在我看来,这是一个粗略的解决方案
有一个简单而直接的解决方案吗?
谢谢 :(
在Swift中,UIControl似乎没有setEnabled:方法.有没有办法检测控制状态何时发生变化?
我calloutAccessoryControlTapped也叫我上标注视图只需轻按和这种行为是正确的.但是,我如何检测用户是否已经点击了正确的附件视图(在我的情况下是一个详细的公开按钮)而不仅仅是在视图中?
我添加了一个简单的检查,但它不起作用.
import UIKit
import MapKit
extension MapVC: MKMapViewDelegate, CLLocationManagerDelegate
{
func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl)
{
if control == view.rightCalloutAccessoryView
{
... // enter here even if I tapped on the view annotation and not on button
}
}
}
Run Code Online (Sandbox Code Playgroud) 如何在MATLAB GUI中为静态文本赋值?
uicontrol ×10
ios ×8
uibutton ×4
objective-c ×3
swift ×3
cocoa-touch ×2
iphone ×2
highlighting ×1
ios5 ×1
ios6 ×1
mapkit ×1
matlab ×1
matlab-guide ×1
storyboard ×1
swift2 ×1
uiimageview ×1
uikit ×1
uitouch ×1