标签: uicontrol

如何将UIControl添加到UIScrollView contentView?

我想将UIControls添加到UIScrollView,例如.

UIControl *couponView = [[UIControl alloc] initWithFrame:CGRectMake(drawX,drawY,couponWidth,couponHeight)];
couponView.backgroundColor = [UIColor redColor];    

[[scrollView contentView] addSubview:couponView]; //may not respond
    [scrollview.contentView addSubview:couponView]; //not a member
Run Code Online (Sandbox Code Playgroud)

我还想根据我添加的UIControl的数量来设置contentView的框架.我想我会在Y屏幕上远离屏幕设置框架,UIScrollView会在用户滚动时将屏幕外部分滚动到可见区域.

我在UIScrollView中没有看到contentView属性..如何访问contentView?

iphone xcode objective-c uiscrollview uicontrol

4
推荐指数
1
解决办法
3464
查看次数

UIControl - 更改分配的选择器:addTarget&removeTarget

我在我的界面中使用了10个按钮,并且需要不时地更改按钮的选择器.

我需要使用:

-(void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents 
Run Code Online (Sandbox Code Playgroud)

在我更改选择器之前或者我可以使用:

-(void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents 
Run Code Online (Sandbox Code Playgroud)

我很担心,如果我使用addTarget改变选择:方法SAN的removeTarget:方法,我会基本上是"堆起来"我的UIButton被按下时,它开火选择.

iphone cocoa-touch objective-c uibutton uicontrol

3
推荐指数
1
解决办法
6616
查看次数

UIControl子类 - 事件调用两次

我目前正在开发一个自定义的UIControl子类.要跟踪触摸,我使用以下方法:

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
 NSLog(@"Start");
 CGPoint location = [touch locationInView:self];
 if ([self touchIsInside:location] == YES) {
    //Touch Down
    [self sendActionsForControlEvents:UIControlEventTouchDown];
    return YES;
 }
 else {
    return NO;
 }  
}
Run Code Online (Sandbox Code Playgroud)

这可以按预期工作,并且@"Start"一次只能显示出来.下一步是我用UIControlEventTouchDown添加一个Target和一个Selector.

[markItem addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

这也有效,并且调用了action:方法.但那是我的问题.该动作被调用两次.我究竟做错了什么?我只使用[self sendActionsForControlEvents:UIControlEventTouchDown];一次,目标动作被调用两次.我的代码出了什么问题?

桑德罗梅尔

subclass objective-c uicontrol ios

3
推荐指数
1
解决办法
5000
查看次数

iOS:最适合从两个选项中进行选择的控件

我正在开发一个 iOS 应用程序,其中我需要一个 UIControl,它允许用户仅在 2 个选项和 2 个选项之间进行选择。

例如,假设我在我的应用程序中显示一个表单,用户在其中填写他的个人信息,如姓名、性别、爱好等。这里,性别是一个可能的字段,只有 2 个选项(其他选项是可能的,但假设我们不希望在我们的应用程序中使用它)。

我认为在这种情况下使用自定义版本的 UISwitch 会很好。

但是,我开始认为 UISwitch 仅适用于启用或禁用某些内容的上下文。它也可以在用户选择 2 个选项之一的上下文中使用吗?这是否违反了 Apple 的设计指南?如果是,那么我可以使用什么其他 UIControl 来做到这一点?(我想使用普通下拉菜单以外的其他东西)

uicontrol uiswitch ios

3
推荐指数
1
解决办法
2464
查看次数

在自定义UIControl对象中定义自定义触摸区域

我正在创建一个自定义的UIControl对象,详见此处.除触摸区外,一切运作良好.

我想找到一种方法将触摸区域限制为仅控制的一部分,在上面的示例中,我希望它仅限于黑色圆周而不是整个控制区域.

任何的想法?干杯

uicontrol ios

3
推荐指数
1
解决办法
561
查看次数

对齐文本和编辑uicontrols

我正在创建GUI,我希望在那里有输入和结果.

我有text字段作为标签和/ editpopup输入.当我有

uicontrol('style','text','string','foo','units','centimeters','position',[1 1 1 0.5]);
uicontrol('style','edit','string','foo','units','centimeters','position',[2 1 1 0.5]);
Run Code Online (Sandbox Code Playgroud)

我得到的foo字符串略有错位,text字段的基线略高于edit/ popfield 的基线.

我该如何对齐这些字段?

formatting matlab alignment uicontrol

3
推荐指数
1
解决办法
3301
查看次数

如何检测用户何时完成在Swift中移动范围滑块

我在项目中使用的是“ 范围”滑块如何使用。

我想检测一下用户何时完成了“范围”滑块的移动。我尝试使用function SliderAction(sender: RangeSlider),但是在滑块中得到了每个移动点。我想我需要使用以下功能:func endTrackingWithTouch(touch: UITouch?, withEvent event: UIEvent?),但这是行不通的。我该怎么做?

slider uicontrol rangeslider ios swift

3
推荐指数
1
解决办法
1758
查看次数

为什么新的 iOS 14 UIControl 动作语法如此糟糕?

iOS 14 中的新功能,我们可以将动作处理程序直接附加到 UIControl:

    let action = UIAction(title:"") { action in
        print("howdy!")
    }
    button.addAction(action, for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)

这很酷,但语法令人愤怒。我必须先形成 UIAction。我必须给 UIAction 一个标题,即使该标题永远不会出现在界面中。没有更好的办法吗?

uicontrol ios uiaction ios14

3
推荐指数
1
解决办法
368
查看次数

始终显示 AVPlayer 控件

我有一个 AVPlayerViewController ,里面有一个 AVPlayer ,我需要的是播放器的控件(播放、暂停、时间滑块)永远不会隐藏。现在,在播放视频大约 4 秒后,它们就会隐藏起来,您必须点击屏幕才能再次显示它们。我无法找到解决方案......有什么想法吗?谢谢!

uicontrol avplayer swift avplayerviewcontroller

2
推荐指数
1
解决办法
1584
查看次数

UIControl 子类正在接收“touchesCancelled”而不是“touchesEnded”

在我的项目中,我有一个主视图,在其中添加了一个UITapGestureRecognizer,在这个主视图中,我有一个自定义的子视图UIControl,我将其称为UICustomButton

重写UICustomButton以下方法UIControl

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)
        pressAnimation()
    }

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        releaseAnimation()
        listener?.onClick(sender: self)
    }

    override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesCancelled(touches, with: event)
        releaseAnimation()
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,所有“点击触摸”都会触发以下回调:

  • touchesBegan
  • touchesCancelled

回调touchesEnded没有被调用,它有点被忽略,我不知道为什么。

我怎样才能让touchesEnded被调用而不是touchesCancelled通过触摸操作?


一些事实:

  • 如果我从父视图中删除UITapGestureRecognizer,一切正常;
  • 即使不调用 thesupers并重写所有touches方法, thetouchesCancelled也会被调用 …

uicontrol ios swift

2
推荐指数
1
解决办法
838
查看次数